<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE LambdaCase #-}</span><span>
</span><span id="line-3"></span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-record-updates #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# OPTIONS_GHC -Wno-incomplete-uni-patterns   #-}</span><span>
</span><span id="line-6"></span><span>
</span><span id="line-7"></span><span class="hs-comment">-- | Describes the provenance of types as they flow through the type-checker.</span><span>
</span><span id="line-8"></span><span class="hs-comment">-- The datatypes here are mainly used for error message generation.</span><span>
</span><span id="line-9"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.Tc.Types.Origin</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-10"></span><span>  </span><span class="hs-comment">-- UserTypeCtxt</span><span>
</span><span id="line-11"></span><span>  </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier">UserTypeCtxt</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier">pprUserTypeCtxt</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier">isSigMaybe</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-12"></span><span>
</span><span id="line-13"></span><span>  </span><span class="hs-comment">-- SkolemInfo</span><span>
</span><span id="line-14"></span><span>  </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SkolemInfo"><span class="hs-identifier">SkolemInfo</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSigSkolInfo"><span class="hs-identifier">pprSigSkolInfo</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier">pprSkolInfo</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>
</span><span id="line-16"></span><span>  </span><span class="hs-comment">-- CtOrigin</span><span>
</span><span id="line-17"></span><span>  </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier">CtOrigin</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier">exprCtOrigin</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier">lexprCtOrigin</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier">matchesCtOrigin</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#grhssCtOrigin"><span class="hs-identifier">grhssCtOrigin</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-18"></span><span>  </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier">isVisibleOrigin</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#toInvisibleOrigin"><span class="hs-identifier">toInvisibleOrigin</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-19"></span><span>  </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier">pprCtOrigin</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier">isGivenOrigin</span></a></span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span class="hs-cpp">

#include &quot;HsVersions.h&quot;
</span><span>
</span><span id="line-25"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-26"></span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html"><span class="hs-identifier">GHC.Tc.Utils.TcType</span></a></span><span>
</span><span id="line-28"></span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Hs.html"><span class="hs-identifier">GHC.Hs</span></a></span><span>
</span><span id="line-30"></span><span>
</span><span id="line-31"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Id.html"><span class="hs-identifier">GHC.Types.Id</span></a></span><span>
</span><span id="line-32"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html"><span class="hs-identifier">GHC.Core.DataCon</span></a></span><span>
</span><span id="line-33"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html"><span class="hs-identifier">GHC.Core.ConLike</span></a></span><span>
</span><span id="line-34"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html"><span class="hs-identifier">GHC.Core.TyCon</span></a></span><span>
</span><span id="line-35"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.InstEnv.html"><span class="hs-identifier">GHC.Core.InstEnv</span></a></span><span>
</span><span id="line-36"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.PatSyn.html"><span class="hs-identifier">GHC.Core.PatSyn</span></a></span><span>
</span><span id="line-37"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Core.Multiplicity.html"><span class="hs-identifier">GHC.Core.Multiplicity</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#scaledThing"><span class="hs-identifier">scaledThing</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-38"></span><span>
</span><span id="line-39"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Unit.Module.html"><span class="hs-identifier">GHC.Unit.Module</span></a></span><span>
</span><span id="line-40"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.html"><span class="hs-identifier">GHC.Types.Name</span></a></span><span>
</span><span id="line-41"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Name.Reader.html"><span class="hs-identifier">GHC.Types.Name.Reader</span></a></span><span>
</span><span id="line-42"></span><span>
</span><span id="line-43"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html"><span class="hs-identifier">GHC.Types.SrcLoc</span></a></span><span>
</span><span id="line-44"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Data.FastString.html"><span class="hs-identifier">GHC.Data.FastString</span></a></span><span>
</span><span id="line-45"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-46"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Types.Basic.html"><span class="hs-identifier">GHC.Types.Basic</span></a></span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
          UserTypeCtxt
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-53"></span><span>
</span><span id="line-54"></span><span class="hs-comment">-------------------------------------</span><span>
</span><span id="line-55"></span><span class="hs-comment">-- | UserTypeCtxt describes the origin of the polymorphic type</span><span>
</span><span id="line-56"></span><span class="hs-comment">-- in the places where we need an expression to have that type</span><span>
</span><span id="line-57"></span><span class="hs-keyword">data</span><span> </span><span id="UserTypeCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-var">UserTypeCtxt</span></a></span></span><span>
</span><span id="line-58"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="FunSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunSigCtxt"><span class="hs-identifier hs-var">FunSigCtxt</span></a></span></span><span>      </span><span class="hs-comment">-- Function type signature, when checking the type</span><span>
</span><span id="line-59"></span><span>                    </span><span class="hs-comment">-- Also used for types in SPECIALISE pragmas</span><span>
</span><span id="line-60"></span><span>       </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>              </span><span class="hs-comment">-- Name of the function</span><span>
</span><span id="line-61"></span><span>       </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>              </span><span class="hs-comment">-- True &lt;=&gt; report redundant constraints</span><span>
</span><span id="line-62"></span><span>                            </span><span class="hs-comment">-- This is usually True, but False for</span><span>
</span><span id="line-63"></span><span>                            </span><span class="hs-comment">--   * Record selectors (not important here)</span><span>
</span><span id="line-64"></span><span>                            </span><span class="hs-comment">--   * Class and instance methods.  Here</span><span>
</span><span id="line-65"></span><span>                            </span><span class="hs-comment">--     the code may legitimately be more</span><span>
</span><span id="line-66"></span><span>                            </span><span class="hs-comment">--     polymorphic than the signature</span><span>
</span><span id="line-67"></span><span>                            </span><span class="hs-comment">--     generated from the class</span><span>
</span><span id="line-68"></span><span>                            </span><span class="hs-comment">--     declaration</span><span>
</span><span id="line-69"></span><span>
</span><span id="line-70"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InfSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InfSigCtxt"><span class="hs-identifier hs-var">InfSigCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>     </span><span class="hs-comment">-- Inferred type for function</span><span>
</span><span id="line-71"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ExprSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ExprSigCtxt"><span class="hs-identifier hs-var">ExprSigCtxt</span></a></span></span><span>         </span><span class="hs-comment">-- Expression type signature</span><span>
</span><span id="line-72"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="KindSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#KindSigCtxt"><span class="hs-identifier hs-var">KindSigCtxt</span></a></span></span><span>         </span><span class="hs-comment">-- Kind signature</span><span>
</span><span id="line-73"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StandaloneKindSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#StandaloneKindSigCtxt"><span class="hs-identifier hs-var">StandaloneKindSigCtxt</span></a></span></span><span>  </span><span class="hs-comment">-- Standalone kind signature</span><span>
</span><span id="line-74"></span><span>       </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>                </span><span class="hs-comment">-- Name of the type/class</span><span>
</span><span id="line-75"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TypeAppCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeAppCtxt"><span class="hs-identifier hs-var">TypeAppCtxt</span></a></span></span><span>         </span><span class="hs-comment">-- Visible type application</span><span>
</span><span id="line-76"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ConArgCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ConArgCtxt"><span class="hs-identifier hs-var">ConArgCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>     </span><span class="hs-comment">-- Data constructor argument</span><span>
</span><span id="line-77"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TySynCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TySynCtxt"><span class="hs-identifier hs-var">TySynCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>      </span><span class="hs-comment">-- RHS of a type synonym decl</span><span>
</span><span id="line-78"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSynCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSynCtxt"><span class="hs-identifier hs-var">PatSynCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>     </span><span class="hs-comment">-- Type sig for a pattern synonym</span><span>
</span><span id="line-79"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSigCtxt"><span class="hs-identifier hs-var">PatSigCtxt</span></a></span></span><span>          </span><span class="hs-comment">-- Type sig in pattern</span><span>
</span><span id="line-80"></span><span>                        </span><span class="hs-comment">--   eg  f (x::t) = ...</span><span>
</span><span id="line-81"></span><span>                        </span><span class="hs-comment">--   or  (x::t, y) = e</span><span>
</span><span id="line-82"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="RuleSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#RuleSigCtxt"><span class="hs-identifier hs-var">RuleSigCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>    </span><span class="hs-comment">-- LHS of a RULE forall</span><span>
</span><span id="line-83"></span><span>                        </span><span class="hs-comment">--    RULE &quot;foo&quot; forall (x :: a -&gt; a). f (Just x) = ...</span><span>
</span><span id="line-84"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ResSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ResSigCtxt"><span class="hs-identifier hs-var">ResSigCtxt</span></a></span></span><span>          </span><span class="hs-comment">-- Result type sig</span><span>
</span><span id="line-85"></span><span>                        </span><span class="hs-comment">--      f x :: t = ....</span><span>
</span><span id="line-86"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ForSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ForSigCtxt"><span class="hs-identifier hs-var">ForSigCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>     </span><span class="hs-comment">-- Foreign import or export signature</span><span>
</span><span id="line-87"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DefaultDeclCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DefaultDeclCtxt"><span class="hs-identifier hs-var">DefaultDeclCtxt</span></a></span></span><span>     </span><span class="hs-comment">-- Types in a default declaration</span><span>
</span><span id="line-88"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InstDeclCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstDeclCtxt"><span class="hs-identifier hs-var">InstDeclCtxt</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>   </span><span class="hs-comment">-- An instance declaration</span><span>
</span><span id="line-89"></span><span>                        </span><span class="hs-comment">--    True:  stand-alone deriving</span><span>
</span><span id="line-90"></span><span>                        </span><span class="hs-comment">--    False: vanilla instance declaration</span><span>
</span><span id="line-91"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpecInstCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SpecInstCtxt"><span class="hs-identifier hs-var">SpecInstCtxt</span></a></span></span><span>        </span><span class="hs-comment">-- SPECIALISE instance pragma</span><span>
</span><span id="line-92"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ThBrackCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ThBrackCtxt"><span class="hs-identifier hs-var">ThBrackCtxt</span></a></span></span><span>         </span><span class="hs-comment">-- Template Haskell type brackets [t| ... |]</span><span>
</span><span id="line-93"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="GenSigCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#GenSigCtxt"><span class="hs-identifier hs-var">GenSigCtxt</span></a></span></span><span>          </span><span class="hs-comment">-- Higher-rank or impredicative situations</span><span>
</span><span id="line-94"></span><span>                        </span><span class="hs-comment">-- e.g. (f e) where f has a higher-rank type</span><span>
</span><span id="line-95"></span><span>                        </span><span class="hs-comment">-- We might want to elaborate this</span><span>
</span><span id="line-96"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="GhciCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#GhciCtxt"><span class="hs-identifier hs-var">GhciCtxt</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>       </span><span class="hs-comment">-- GHCi command :kind &lt;type&gt;</span><span>
</span><span id="line-97"></span><span>                        </span><span class="hs-comment">-- The Bool indicates if we are checking the outermost</span><span>
</span><span id="line-98"></span><span>                        </span><span class="hs-comment">-- type application.</span><span>
</span><span id="line-99"></span><span>                        </span><span class="hs-comment">-- See Note [Unsaturated type synonyms in GHCi] in</span><span>
</span><span id="line-100"></span><span>                        </span><span class="hs-comment">-- GHC.Tc.Validity.</span><span>
</span><span id="line-101"></span><span>
</span><span id="line-102"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ClassSCCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ClassSCCtxt"><span class="hs-identifier hs-var">ClassSCCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>    </span><span class="hs-comment">-- Superclasses of a class</span><span>
</span><span id="line-103"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SigmaCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SigmaCtxt"><span class="hs-identifier hs-var">SigmaCtxt</span></a></span></span><span>           </span><span class="hs-comment">-- Theta part of a normal for-all type</span><span>
</span><span id="line-104"></span><span>                        </span><span class="hs-comment">--      f :: &lt;S&gt; =&gt; a -&gt; a</span><span>
</span><span id="line-105"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DataTyCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataTyCtxt"><span class="hs-identifier hs-var">DataTyCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>     </span><span class="hs-comment">-- The &quot;stupid theta&quot; part of a data decl</span><span>
</span><span id="line-106"></span><span>                        </span><span class="hs-comment">--      data &lt;S&gt; =&gt; T a = MkT a</span><span>
</span><span id="line-107"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DerivClauseCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivClauseCtxt"><span class="hs-identifier hs-var">DerivClauseCtxt</span></a></span></span><span>     </span><span class="hs-comment">-- A 'deriving' clause</span><span>
</span><span id="line-108"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TyVarBndrKindCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyVarBndrKindCtxt"><span class="hs-identifier hs-var">TyVarBndrKindCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>  </span><span class="hs-comment">-- The kind of a type variable being bound</span><span>
</span><span id="line-109"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DataKindCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataKindCtxt"><span class="hs-identifier hs-var">DataKindCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>   </span><span class="hs-comment">-- The kind of a data/newtype (instance)</span><span>
</span><span id="line-110"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TySynKindCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TySynKindCtxt"><span class="hs-identifier hs-var">TySynKindCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>  </span><span class="hs-comment">-- The kind of the RHS of a type synonym</span><span>
</span><span id="line-111"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TyFamResKindCtxt"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyFamResKindCtxt"><span class="hs-identifier hs-var">TyFamResKindCtxt</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>   </span><span class="hs-comment">-- The result kind of a type family</span><span>
</span><span id="line-112"></span><span>
</span><span id="line-113"></span><span class="hs-comment">{-
-- Notes re TySynCtxt
-- We allow type synonyms that aren't types; e.g.  type List = []
--
-- If the RHS mentions tyvars that aren't in scope, we'll
-- quantify over them:
--      e.g.    type T = a-&gt;a
-- will become  type T = forall a. a-&gt;a
--
-- With gla-exts that's right, but for H98 we should complain.
-}</span><span>
</span><span id="line-124"></span><span>
</span><span id="line-125"></span><span>
</span><span id="line-126"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-type">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-127"></span><span id="pprUserTypeCtxt"><span class="annot"><span class="annottext">pprUserTypeCtxt :: UserTypeCtxt -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var hs-var">pprUserTypeCtxt</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunSigCtxt"><span class="hs-identifier hs-type">FunSigCtxt</span></a></span><span> </span><span id="local-6989586621680880664"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880664"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type signature for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880664"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-128"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InfSigCtxt"><span class="hs-identifier hs-type">InfSigCtxt</span></a></span><span> </span><span id="local-6989586621680880659"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880659"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the inferred type for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880659"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-129"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#RuleSigCtxt"><span class="hs-identifier hs-type">RuleSigCtxt</span></a></span><span> </span><span id="local-6989586621680880658"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880658"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type signature for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880658"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-130"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#ExprSigCtxt"><span class="hs-identifier hs-var">ExprSigCtxt</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an expression type signature&quot;</span></span><span>
</span><span id="line-131"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#KindSigCtxt"><span class="hs-identifier hs-var">KindSigCtxt</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a kind signature&quot;</span></span><span>
</span><span id="line-132"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#StandaloneKindSigCtxt"><span class="hs-identifier hs-type">StandaloneKindSigCtxt</span></a></span><span> </span><span id="local-6989586621680880657"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880657"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a standalone kind signature for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880657"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-133"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#TypeAppCtxt"><span class="hs-identifier hs-var">TypeAppCtxt</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a type argument&quot;</span></span><span>
</span><span id="line-134"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ConArgCtxt"><span class="hs-identifier hs-type">ConArgCtxt</span></a></span><span> </span><span id="local-6989586621680880656"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880656"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type of the constructor&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880656"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-135"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TySynCtxt"><span class="hs-identifier hs-type">TySynCtxt</span></a></span><span> </span><span id="local-6989586621680880655"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880655"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the RHS of the type synonym&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880655"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-136"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#ThBrackCtxt"><span class="hs-identifier hs-var">ThBrackCtxt</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a Template Haskell quotation [t|...|]&quot;</span></span><span>
</span><span id="line-137"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#PatSigCtxt"><span class="hs-identifier hs-var">PatSigCtxt</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern type signature&quot;</span></span><span>
</span><span id="line-138"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#ResSigCtxt"><span class="hs-identifier hs-var">ResSigCtxt</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a result type signature&quot;</span></span><span>
</span><span id="line-139"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ForSigCtxt"><span class="hs-identifier hs-type">ForSigCtxt</span></a></span><span> </span><span id="local-6989586621680880654"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880654"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the foreign declaration for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880654"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-140"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#DefaultDeclCtxt"><span class="hs-identifier hs-var">DefaultDeclCtxt</span></a></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a type in a `default' declaration&quot;</span></span><span>
</span><span id="line-141"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstDeclCtxt"><span class="hs-identifier hs-type">InstDeclCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an instance declaration&quot;</span></span><span>
</span><span id="line-142"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstDeclCtxt"><span class="hs-identifier hs-type">InstDeclCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a stand-alone deriving instance declaration&quot;</span></span><span>
</span><span id="line-143"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#SpecInstCtxt"><span class="hs-identifier hs-var">SpecInstCtxt</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a SPECIALISE instance pragma&quot;</span></span><span>
</span><span id="line-144"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#GenSigCtxt"><span class="hs-identifier hs-var">GenSigCtxt</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a type expected by the context&quot;</span></span><span>
</span><span id="line-145"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#GhciCtxt"><span class="hs-identifier hs-type">GhciCtxt</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a type in a GHCi command&quot;</span></span><span>
</span><span id="line-146"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ClassSCCtxt"><span class="hs-identifier hs-type">ClassSCCtxt</span></a></span><span> </span><span id="local-6989586621680880653"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880653"><span class="hs-identifier hs-var">c</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the super-classes of class&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880653"><span class="hs-identifier hs-var">c</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-147"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#SigmaCtxt"><span class="hs-identifier hs-var">SigmaCtxt</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the context of a polymorphic type&quot;</span></span><span>
</span><span id="line-148"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataTyCtxt"><span class="hs-identifier hs-type">DataTyCtxt</span></a></span><span> </span><span id="local-6989586621680880652"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880652"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the context of the data type declaration for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880652"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-149"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSynCtxt"><span class="hs-identifier hs-type">PatSynCtxt</span></a></span><span> </span><span id="local-6989586621680880651"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880651"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the signature for pattern synonym&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880651"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-150"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#DerivClauseCtxt"><span class="hs-identifier hs-var">DerivClauseCtxt</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a `deriving' clause&quot;</span></span><span>
</span><span id="line-151"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyVarBndrKindCtxt"><span class="hs-identifier hs-type">TyVarBndrKindCtxt</span></a></span><span> </span><span id="local-6989586621680880650"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880650"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the kind annotation on the type variable&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880650"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-152"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataKindCtxt"><span class="hs-identifier hs-type">DataKindCtxt</span></a></span><span> </span><span id="local-6989586621680880649"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880649"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the kind annotation on the declaration for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880649"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-153"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TySynKindCtxt"><span class="hs-identifier hs-type">TySynKindCtxt</span></a></span><span> </span><span id="local-6989586621680880648"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880648"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the kind annotation on the declaration for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880648"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-154"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyFamResKindCtxt"><span class="hs-identifier hs-type">TyFamResKindCtxt</span></a></span><span> </span><span id="local-6989586621680880647"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880647"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the result kind for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880647"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-155"></span><span>
</span><span id="line-156"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-type">isSigMaybe</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-157"></span><span id="isSigMaybe"><span class="annot"><span class="annottext">isSigMaybe :: UserTypeCtxt -&gt; Maybe Name
</span><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-var hs-var">isSigMaybe</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunSigCtxt"><span class="hs-identifier hs-type">FunSigCtxt</span></a></span><span> </span><span id="local-6989586621680880646"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880646"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880646"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-158"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-var">isSigMaybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ConArgCtxt"><span class="hs-identifier hs-type">ConArgCtxt</span></a></span><span> </span><span id="local-6989586621680880645"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880645"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880645"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-159"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-var">isSigMaybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ForSigCtxt"><span class="hs-identifier hs-type">ForSigCtxt</span></a></span><span> </span><span id="local-6989586621680880644"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880644"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880644"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-160"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-var">isSigMaybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSynCtxt"><span class="hs-identifier hs-type">PatSynCtxt</span></a></span><span> </span><span id="local-6989586621680880643"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880643"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; Maybe Name
forall a. a -&gt; Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880643"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-161"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isSigMaybe"><span class="hs-identifier hs-var">isSigMaybe</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><span class="hs-identifier">_</span></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe Name
forall a. Maybe a
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-162"></span><span>
</span><span id="line-163"></span><span class="hs-comment">{-
************************************************************************
*                                                                      *
                SkolemInfo
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-170"></span><span>
</span><span id="line-171"></span><span class="hs-comment">-- SkolemInfo gives the origin of *given* constraints</span><span>
</span><span id="line-172"></span><span class="hs-comment">--   a) type variables are skolemised</span><span>
</span><span id="line-173"></span><span class="hs-comment">--   b) an implication constraint is generated</span><span>
</span><span id="line-174"></span><span class="hs-keyword">data</span><span> </span><span id="SkolemInfo"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SkolemInfo"><span class="hs-identifier hs-var">SkolemInfo</span></a></span></span><span>
</span><span id="line-175"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="SigSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SigSkol"><span class="hs-identifier hs-var">SigSkol</span></a></span></span><span> </span><span class="hs-comment">-- A skolem that is created by instantiating</span><span>
</span><span id="line-176"></span><span>            </span><span class="hs-comment">-- a programmer-supplied type signature</span><span>
</span><span id="line-177"></span><span>            </span><span class="hs-comment">-- Location of the binding site is on the TyVar</span><span>
</span><span id="line-178"></span><span>            </span><span class="hs-comment">-- See Note [SigSkol SkolemInfo]</span><span>
</span><span id="line-179"></span><span>       </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span>        </span><span class="hs-comment">-- What sort of signature</span><span>
</span><span id="line-180"></span><span>       </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span>              </span><span class="hs-comment">-- Original type signature (before skolemisation)</span><span>
</span><span id="line-181"></span><span>       </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Types.Var.html#TcTyVar"><span class="hs-identifier hs-type">TcTyVar</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>    </span><span class="hs-comment">-- Maps the original name of the skolemised tyvar</span><span>
</span><span id="line-182"></span><span>                           </span><span class="hs-comment">-- to its instantiated version</span><span>
</span><span id="line-183"></span><span>
</span><span id="line-184"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SigTypeSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SigTypeSkol"><span class="hs-identifier hs-var">SigTypeSkol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span>
</span><span id="line-185"></span><span>                 </span><span class="hs-comment">-- like SigSkol, but when we're kind-checking the *type*</span><span>
</span><span id="line-186"></span><span>                 </span><span class="hs-comment">-- hence, we have less info</span><span>
</span><span id="line-187"></span><span>
</span><span id="line-188"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ForAllSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ForAllSkol"><span class="hs-identifier hs-var">ForAllSkol</span></a></span></span><span>  </span><span class="hs-comment">-- Bound by a user-written &quot;forall&quot;.</span><span>
</span><span id="line-189"></span><span>       </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>        </span><span class="hs-comment">-- Shows the entire forall type</span><span>
</span><span id="line-190"></span><span>       </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>        </span><span class="hs-comment">-- Shows just the binders, used when reporting a bad telescope</span><span>
</span><span id="line-191"></span><span>                   </span><span class="hs-comment">-- See Note [Checking telescopes] in GHC.Tc.Types.Constraint</span><span>
</span><span id="line-192"></span><span>
</span><span id="line-193"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DerivSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivSkol"><span class="hs-identifier hs-var">DerivSkol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>      </span><span class="hs-comment">-- Bound by a 'deriving' clause;</span><span>
</span><span id="line-194"></span><span>                        </span><span class="hs-comment">-- the type is the instance we are trying to derive</span><span>
</span><span id="line-195"></span><span>
</span><span id="line-196"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InstSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstSkol"><span class="hs-identifier hs-var">InstSkol</span></a></span></span><span>            </span><span class="hs-comment">-- Bound at an instance decl</span><span>
</span><span id="line-197"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InstSC"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstSC"><span class="hs-identifier hs-var">InstSC</span></a></span></span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TypeSize"><span class="hs-identifier hs-type">TypeSize</span></a></span><span>     </span><span class="hs-comment">-- A &quot;given&quot; constraint obtained by superclass selection.</span><span>
</span><span id="line-198"></span><span>                        </span><span class="hs-comment">-- If (C ty1 .. tyn) is the largest class from</span><span>
</span><span id="line-199"></span><span>                        </span><span class="hs-comment">--    which we made a superclass selection in the chain,</span><span>
</span><span id="line-200"></span><span>                        </span><span class="hs-comment">--    then TypeSize = sizeTypes [ty1, .., tyn]</span><span>
</span><span id="line-201"></span><span>                        </span><span class="hs-comment">-- See Note [Solving superclass constraints] in GHC.Tc.TyCl.Instance</span><span>
</span><span id="line-202"></span><span>
</span><span id="line-203"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FamInstSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#FamInstSkol"><span class="hs-identifier hs-var">FamInstSkol</span></a></span></span><span>         </span><span class="hs-comment">-- Bound at a family instance decl</span><span>
</span><span id="line-204"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSkol"><span class="hs-identifier hs-var">PatSkol</span></a></span></span><span>             </span><span class="hs-comment">-- An existential type variable bound by a pattern for</span><span>
</span><span id="line-205"></span><span>      </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span>           </span><span class="hs-comment">-- a data constructor with an existential type.</span><span>
</span><span id="line-206"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsMatchContext"><span class="hs-identifier hs-type">HsMatchContext</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-207"></span><span>             </span><span class="hs-comment">-- e.g.   data T = forall a. Eq a =&gt; MkT a</span><span>
</span><span id="line-208"></span><span>             </span><span class="hs-comment">--        f (MkT x) = ...</span><span>
</span><span id="line-209"></span><span>             </span><span class="hs-comment">-- The pattern MkT x will allocate an existential type</span><span>
</span><span id="line-210"></span><span>             </span><span class="hs-comment">-- variable for 'a'.</span><span>
</span><span id="line-211"></span><span>
</span><span id="line-212"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ArrowSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ArrowSkol"><span class="hs-identifier hs-var">ArrowSkol</span></a></span></span><span>           </span><span class="hs-comment">-- An arrow form (see GHC.Tc.Gen.Arrow)</span><span>
</span><span id="line-213"></span><span>
</span><span id="line-214"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="IPSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#IPSkol"><span class="hs-identifier hs-var">IPSkol</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Type.html#HsIPName"><span class="hs-identifier hs-type">HsIPName</span></a></span><span class="hs-special">]</span><span>   </span><span class="hs-comment">-- Binding site of an implicit parameter</span><span>
</span><span id="line-215"></span><span>
</span><span id="line-216"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="RuleSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#RuleSkol"><span class="hs-identifier hs-var">RuleSkol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#RuleName"><span class="hs-identifier hs-type">RuleName</span></a></span><span>   </span><span class="hs-comment">-- The LHS of a RULE</span><span>
</span><span id="line-217"></span><span>
</span><span id="line-218"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InferSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InferSkol"><span class="hs-identifier hs-var">InferSkol</span></a></span></span><span> </span><span class="hs-special">[</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span class="hs-special">,</span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-219"></span><span>                        </span><span class="hs-comment">-- We have inferred a type for these (mutually-recursivive)</span><span>
</span><span id="line-220"></span><span>                        </span><span class="hs-comment">-- polymorphic Ids, and are now checking that their RHS</span><span>
</span><span id="line-221"></span><span>                        </span><span class="hs-comment">-- constraints are satisfied.</span><span>
</span><span id="line-222"></span><span>
</span><span id="line-223"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="BracketSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#BracketSkol"><span class="hs-identifier hs-var">BracketSkol</span></a></span></span><span>         </span><span class="hs-comment">-- Template Haskell bracket</span><span>
</span><span id="line-224"></span><span>
</span><span id="line-225"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="UnifyForAllSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#UnifyForAllSkol"><span class="hs-identifier hs-var">UnifyForAllSkol</span></a></span></span><span>     </span><span class="hs-comment">-- We are unifying two for-all types</span><span>
</span><span id="line-226"></span><span>       </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span>           </span><span class="hs-comment">-- The instantiated type *inside* the forall</span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TyConSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyConSkol"><span class="hs-identifier hs-var">TyConSkol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.TyCon.html#TyConFlavour"><span class="hs-identifier hs-type">TyConFlavour</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>  </span><span class="hs-comment">-- bound in a type declaration of the given flavour</span><span>
</span><span id="line-229"></span><span>
</span><span id="line-230"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DataConSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataConSkol"><span class="hs-identifier hs-var">DataConSkol</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>    </span><span class="hs-comment">-- bound as an existential in a Haskell98 datacon decl or</span><span>
</span><span id="line-231"></span><span>                        </span><span class="hs-comment">-- as any variable in a GADT datacon decl</span><span>
</span><span id="line-232"></span><span>
</span><span id="line-233"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ReifySkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ReifySkol"><span class="hs-identifier hs-var">ReifySkol</span></a></span></span><span>           </span><span class="hs-comment">-- Bound during Template Haskell reification</span><span>
</span><span id="line-234"></span><span>
</span><span id="line-235"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="QuantCtxtSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#QuantCtxtSkol"><span class="hs-identifier hs-var">QuantCtxtSkol</span></a></span></span><span>       </span><span class="hs-comment">-- Quantified context, e.g.</span><span>
</span><span id="line-236"></span><span>                        </span><span class="hs-comment">--   f :: forall c. (forall a. c a =&gt; c [a]) =&gt; blah</span><span>
</span><span id="line-237"></span><span>
</span><span id="line-238"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="RuntimeUnkSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#RuntimeUnkSkol"><span class="hs-identifier hs-var">RuntimeUnkSkol</span></a></span></span><span>      </span><span class="hs-comment">-- Runtime skolem from the GHCi debugger      #14628</span><span>
</span><span id="line-239"></span><span>
</span><span id="line-240"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="UnkSkol"><span class="annot"><a href="GHC.Tc.Types.Origin.html#UnkSkol"><span class="hs-identifier hs-var">UnkSkol</span></a></span></span><span>             </span><span class="hs-comment">-- Unhelpful info (until I improve it)</span><span>
</span><span id="line-241"></span><span>
</span><span id="line-242"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680880617"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SkolemInfo"><span class="hs-identifier hs-type">SkolemInfo</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-243"></span><span>  </span><span id="local-6989586621680880615"><span class="annot"><span class="annottext">ppr :: SkolemInfo -&gt; SDoc
</span><a href="#local-6989586621680880615"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SkolemInfo -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span>
</span><span id="line-244"></span><span>
</span><span id="line-245"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-type">pprSkolInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SkolemInfo"><span class="hs-identifier hs-type">SkolemInfo</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-246"></span><span class="hs-comment">-- Complete the sentence &quot;is a rigid type variable bound by...&quot;</span><span>
</span><span id="line-247"></span><span id="pprSkolInfo"><span class="annot"><span class="annottext">pprSkolInfo :: SkolemInfo -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var hs-var">pprSkolInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SigSkol"><span class="hs-identifier hs-type">SigSkol</span></a></span><span> </span><span id="local-6989586621680880614"><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880614"><span class="hs-identifier hs-var">cx</span></a></span></span><span> </span><span id="local-6989586621680880613"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880613"><span class="hs-identifier hs-var">ty</span></a></span></span><span> </span><span class="annot"><span class="annottext">[(Name, Id)]
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt -&gt; TcType -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprSigSkolInfo"><span class="hs-identifier hs-var">pprSigSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880614"><span class="hs-identifier hs-var">cx</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880613"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-248"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SigTypeSkol"><span class="hs-identifier hs-type">SigTypeSkol</span></a></span><span> </span><span id="local-6989586621680880612"><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880612"><span class="hs-identifier hs-var">cx</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880612"><span class="hs-identifier hs-var">cx</span></a></span><span>
</span><span id="line-249"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ForAllSkol"><span class="hs-identifier hs-type">ForAllSkol</span></a></span><span> </span><span id="local-6989586621680880611"><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680880611"><span class="hs-identifier hs-var">pt</span></a></span></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="#local-6989586621680880611"><span class="hs-identifier hs-var">pt</span></a></span><span>
</span><span id="line-250"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#IPSkol"><span class="hs-identifier hs-type">IPSkol</span></a></span><span> </span><span id="local-6989586621680880610"><span class="annot"><span class="annottext">[HsIPName]
</span><a href="#local-6989586621680880610"><span class="hs-identifier hs-var">ips</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the implicit-parameter binding&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[HsIPName] -&gt; SDoc
forall a. [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#plural"><span class="hs-identifier hs-var">plural</span></a></span><span> </span><span class="annot"><span class="annottext">[HsIPName]
</span><a href="#local-6989586621680880610"><span class="hs-identifier hs-var">ips</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;for&quot;</span></span><span>
</span><span id="line-251"></span><span>                                 </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">(HsIPName -&gt; SDoc) -&gt; [HsIPName] -&gt; SDoc
forall a. (a -&gt; SDoc) -&gt; [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprWithCommas"><span class="hs-identifier hs-var">pprWithCommas</span></a></span><span> </span><span class="annot"><span class="annottext">HsIPName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">[HsIPName]
</span><a href="#local-6989586621680880610"><span class="hs-identifier hs-var">ips</span></a></span><span>
</span><span id="line-252"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivSkol"><span class="hs-identifier hs-type">DerivSkol</span></a></span><span> </span><span id="local-6989586621680880606"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880606"><span class="hs-identifier hs-var">pred</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the deriving clause for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880606"><span class="hs-identifier hs-var">pred</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-253"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#InstSkol"><span class="hs-identifier hs-var">InstSkol</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the instance declaration&quot;</span></span><span>
</span><span id="line-254"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstSC"><span class="hs-identifier hs-type">InstSC</span></a></span><span> </span><span id="local-6989586621680880605"><span class="annot"><span class="annottext">TypeSize
</span><a href="#local-6989586621680880605"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the instance declaration&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeSize -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TypeSize
</span><a href="#local-6989586621680880605"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-255"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#FamInstSkol"><span class="hs-identifier hs-var">FamInstSkol</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a family instance declaration&quot;</span></span><span>
</span><span id="line-256"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#BracketSkol"><span class="hs-identifier hs-var">BracketSkol</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a Template Haskell bracket&quot;</span></span><span>
</span><span id="line-257"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#RuleSkol"><span class="hs-identifier hs-type">RuleSkol</span></a></span><span> </span><span id="local-6989586621680880602"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880602"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the RULE&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; SDoc
</span><a href="GHC.Types.Basic.html#pprRuleName"><span class="hs-identifier hs-var">pprRuleName</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880602"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-258"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#ArrowSkol"><span class="hs-identifier hs-var">ArrowSkol</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an arrow form&quot;</span></span><span>
</span><span id="line-259"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSkol"><span class="hs-identifier hs-type">PatSkol</span></a></span><span> </span><span id="local-6989586621680880600"><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680880600"><span class="hs-identifier hs-var">cl</span></a></span></span><span> </span><span id="local-6989586621680880599"><span class="annot"><span class="annottext">HsMatchContext GhcRn
</span><a href="#local-6989586621680880599"><span class="hs-identifier hs-var">mc</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">ConLike -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprPatSkolInfo"><span class="hs-identifier hs-var">pprPatSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">ConLike
</span><a href="#local-6989586621680880600"><span class="hs-identifier hs-var">cl</span></a></span><span>
</span><span id="line-260"></span><span>                                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;in&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">HsMatchContext GhcRn -&gt; SDoc
forall p. Outputable (IdP p) =&gt; HsMatchContext p -&gt; SDoc
</span><a href="GHC.Hs.Expr.html#pprMatchContext"><span class="hs-identifier hs-var">pprMatchContext</span></a></span><span> </span><span class="annot"><span class="annottext">HsMatchContext GhcRn
</span><a href="#local-6989586621680880599"><span class="hs-identifier hs-var">mc</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-261"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InferSkol"><span class="hs-identifier hs-type">InferSkol</span></a></span><span> </span><span id="local-6989586621680880595"><span class="annot"><span class="annottext">[(Name, TcType)]
</span><a href="#local-6989586621680880595"><span class="hs-identifier hs-var">ids</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the inferred type&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[(Name, TcType)] -&gt; SDoc
forall a. [a] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#plural"><span class="hs-identifier hs-var">plural</span></a></span><span> </span><span class="annot"><span class="annottext">[(Name, TcType)]
</span><a href="#local-6989586621680880595"><span class="hs-identifier hs-var">ids</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;of&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-262"></span><span>                                   </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880592"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880590"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-263"></span><span>                                                   </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span id="local-6989586621680880592"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880592"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">,</span><span id="local-6989586621680880590"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880590"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[(Name, TcType)]
</span><a href="#local-6989586621680880595"><span class="hs-identifier hs-var">ids</span></a></span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-264"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UnifyForAllSkol"><span class="hs-identifier hs-type">UnifyForAllSkol</span></a></span><span> </span><span id="local-6989586621680880589"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880589"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880589"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-265"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TyConSkol"><span class="hs-identifier hs-type">TyConSkol</span></a></span><span> </span><span id="local-6989586621680880588"><span class="annot"><span class="annottext">TyConFlavour
</span><a href="#local-6989586621680880588"><span class="hs-identifier hs-var">flav</span></a></span></span><span> </span><span id="local-6989586621680880587"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880587"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TyConFlavour -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TyConFlavour
</span><a href="#local-6989586621680880588"><span class="hs-identifier hs-var">flav</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;declaration for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880587"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-266"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DataConSkol"><span class="hs-identifier hs-type">DataConSkol</span></a></span><span> </span><span id="local-6989586621680880586"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880586"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the data constructor&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880586"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-267"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#ReifySkol"><span class="hs-identifier hs-var">ReifySkol</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type being reified&quot;</span></span><span>
</span><span id="line-268"></span><span>
</span><span id="line-269"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#QuantCtxtSkol"><span class="hs-identifier hs-type">QuantCtxtSkol</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a quantified context&quot;</span></span><span>
</span><span id="line-270"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#RuntimeUnkSkol"><span class="hs-identifier hs-var">RuntimeUnkSkol</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Unknown type from GHCi runtime&quot;</span></span><span>
</span><span id="line-271"></span><span>
</span><span id="line-272"></span><span class="hs-comment">-- UnkSkol</span><span>
</span><span id="line-273"></span><span class="hs-comment">-- For type variables the others are dealt with by pprSkolTvBinding.</span><span>
</span><span id="line-274"></span><span class="hs-comment">-- For Insts, these cases should not happen</span><span>
</span><span id="line-275"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSkolInfo"><span class="hs-identifier hs-var">pprSkolInfo</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="GHC.Tc.Types.Origin.html#UnkSkol"><span class="hs-identifier hs-var">UnkSkol</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-identifier">WARN</span><span class="hs-special">(</span><span> </span><span class="hs-identifier">True</span><span class="hs-special">,</span><span> </span><span class="hs-identifier">text</span><span> </span><span class="hs-string">&quot;pprSkolInfo: UnkSkol&quot;</span><span> </span><span class="hs-special">)</span><span> </span><span class="hs-identifier">text</span><span> </span><span class="hs-string">&quot;UnkSkol&quot;</span><span>
</span><span id="line-276"></span><span>
</span><span id="line-277"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprSigSkolInfo"><span class="hs-identifier hs-type">pprSigSkolInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-278"></span><span class="hs-comment">-- The type is already tidied</span><span>
</span><span id="line-279"></span><span id="pprSigSkolInfo"><span class="annot"><span class="annottext">pprSigSkolInfo :: UserTypeCtxt -&gt; TcType -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprSigSkolInfo"><span class="hs-identifier hs-var hs-var">pprSigSkolInfo</span></a></span></span><span> </span><span id="local-6989586621680880584"><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880584"><span class="hs-identifier hs-var">ctxt</span></a></span></span><span> </span><span id="local-6989586621680880583"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880583"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-280"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880584"><span class="hs-identifier hs-var">ctxt</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-281"></span><span>       </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunSigCtxt"><span class="hs-identifier hs-type">FunSigCtxt</span></a></span><span> </span><span id="local-6989586621680880582"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880582"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the type signature for:&quot;</span></span><span>
</span><span id="line-282"></span><span>                              </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. OutputableBndr a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#pprPrefixOcc"><span class="hs-identifier hs-var">pprPrefixOcc</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880582"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880583"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-283"></span><span>       </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSynCtxt"><span class="hs-identifier hs-type">PatSynCtxt</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880584"><span class="hs-identifier hs-var">ctxt</span></a></span><span>  </span><span class="hs-comment">-- See Note [Skolem info for pattern synonyms]</span><span>
</span><span id="line-284"></span><span>       </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><span class="hs-identifier">_</span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprUserTypeCtxt"><span class="hs-identifier hs-var">pprUserTypeCtxt</span></a></span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880584"><span class="hs-identifier hs-var">ctxt</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#colon"><span class="hs-identifier hs-var">colon</span></a></span><span>
</span><span id="line-285"></span><span>                              </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880583"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-286"></span><span>
</span><span id="line-287"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprPatSkolInfo"><span class="hs-identifier hs-type">pprPatSkolInfo</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Core.ConLike.html#ConLike"><span class="hs-identifier hs-type">ConLike</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-288"></span><span id="pprPatSkolInfo"><span class="annot"><span class="annottext">pprPatSkolInfo :: ConLike -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprPatSkolInfo"><span class="hs-identifier hs-var hs-var">pprPatSkolInfo</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#RealDataCon"><span class="hs-identifier hs-type">RealDataCon</span></a></span><span> </span><span id="local-6989586621680880577"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880577"><span class="hs-identifier hs-var">dc</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-289"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(DynFlags -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sdocWithDynFlags"><span class="hs-identifier hs-var">sdocWithDynFlags</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-glyph">\</span><span id="local-6989586621680880575"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680880575"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-290"></span><span>      </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern with constructor:&quot;</span></span><span>
</span><span id="line-291"></span><span>          </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880577"><span class="hs-identifier hs-var">dc</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span>
</span><span id="line-292"></span><span>            </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
</span><a href="GHC.Core.TyCo.Ppr.html#pprType"><span class="hs-identifier hs-var">pprType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; DataCon -&gt; TcType
</span><a href="GHC.Core.DataCon.html#dataConDisplayType"><span class="hs-identifier hs-var">dataConDisplayType</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621680880575"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880577"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-293"></span><span>            </span><span class="hs-comment">-- pprType prints forall's regardless of -fprint-explicit-foralls</span><span>
</span><span id="line-294"></span><span>            </span><span class="hs-comment">-- which is what we want here, since we might be saying</span><span>
</span><span id="line-295"></span><span>            </span><span class="hs-comment">-- type variable 't' is bound by ...</span><span>
</span><span id="line-296"></span><span>
</span><span id="line-297"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprPatSkolInfo"><span class="hs-identifier hs-var">pprPatSkolInfo</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Core.ConLike.html#PatSynCon"><span class="hs-identifier hs-type">PatSynCon</span></a></span><span> </span><span id="local-6989586621680880570"><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680880570"><span class="hs-identifier hs-var">ps</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-298"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern with pattern synonym:&quot;</span></span><span>
</span><span id="line-299"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680880570"><span class="hs-identifier hs-var">ps</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#dcolon"><span class="hs-identifier hs-var">dcolon</span></a></span><span>
</span><span id="line-300"></span><span>                   </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn -&gt; SDoc
</span><a href="GHC.Core.PatSyn.html#pprPatSynType"><span class="hs-identifier hs-var">pprPatSynType</span></a></span><span> </span><span class="annot"><span class="annottext">PatSyn
</span><a href="#local-6989586621680880570"><span class="hs-identifier hs-var">ps</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Utils.Outputable.html#comma"><span class="hs-identifier hs-var">comma</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-301"></span><span>
</span><span id="line-302"></span><span class="hs-comment">{- Note [Skolem info for pattern synonyms]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
For pattern synonym SkolemInfo we have
   SigSkol (PatSynCtxt p) ty _
but the type 'ty' is not very helpful.  The full pattern-synonym type
has the provided and required pieces, which it is inconvenient to
record and display here. So we simply don't display the type at all,
contenting outselves with just the name of the pattern synonym, which
is fine.  We could do more, but it doesn't seem worth it.

Note [SigSkol SkolemInfo]
~~~~~~~~~~~~~~~~~~~~~~~~~
Suppose we skolemise a type
   f :: forall a. Eq a =&gt; forall b. b -&gt; a
Then we'll instantiate [a :-&gt; a', b :-&gt; b'], and with the instantiated
      a' -&gt; b' -&gt; a.
But when, in an error message, we report that &quot;b is a rigid type
variable bound by the type signature for f&quot;, we want to show the foralls
in the right place.  So we proceed as follows:

* In SigSkol we record
    - the original signature forall a. a -&gt; forall b. b -&gt; a
    - the instantiation mapping [a :-&gt; a', b :-&gt; b']

* Then when tidying in GHC.Tc.Utils.TcMType.tidySkolemInfo, we first tidy a' to
  whatever it tidies to, say a''; and then we walk over the type
  replacing the binder a by the tidied version a'', to give
       forall a''. Eq a'' =&gt; forall b''. b'' -&gt; a''
  We need to do this under (=&gt;) arrows, to match what topSkolemise
  does.

* Typically a'' will have a nice pretty name like &quot;a&quot;, but the point is
  that the foral-bound variables of the signature we report line up with
  the instantiated skolems lying  around in other types.


************************************************************************
*                                                                      *
            CtOrigin
*                                                                      *
************************************************************************
-}</span><span>
</span><span id="line-344"></span><span>
</span><span id="line-345"></span><span class="hs-keyword">data</span><span> </span><span id="CtOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-var">CtOrigin</span></a></span></span><span>
</span><span id="line-346"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span id="GivenOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#GivenOrigin"><span class="hs-identifier hs-var">GivenOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SkolemInfo"><span class="hs-identifier hs-type">SkolemInfo</span></a></span><span>
</span><span id="line-347"></span><span>
</span><span id="line-348"></span><span>  </span><span class="hs-comment">-- All the others are for *wanted* constraints</span><span>
</span><span id="line-349"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="OccurrenceOf"><span class="annot"><a href="GHC.Tc.Types.Origin.html#OccurrenceOf"><span class="hs-identifier hs-var">OccurrenceOf</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>              </span><span class="hs-comment">-- Occurrence of an overloaded identifier</span><span>
</span><span id="line-350"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="OccurrenceOfRecSel"><span class="annot"><a href="GHC.Tc.Types.Origin.html#OccurrenceOfRecSel"><span class="hs-identifier hs-var">OccurrenceOfRecSel</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.Reader.html#RdrName"><span class="hs-identifier hs-type">RdrName</span></a></span><span>     </span><span class="hs-comment">-- Occurrence of a record selector</span><span>
</span><span id="line-351"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="AppOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#AppOrigin"><span class="hs-identifier hs-var">AppOrigin</span></a></span></span><span>                      </span><span class="hs-comment">-- An application of some kind</span><span>
</span><span id="line-352"></span><span>
</span><span id="line-353"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SpecPragOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SpecPragOrigin"><span class="hs-identifier hs-var">SpecPragOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UserTypeCtxt"><span class="hs-identifier hs-type">UserTypeCtxt</span></a></span><span>    </span><span class="hs-comment">-- Specialisation pragma for</span><span>
</span><span id="line-354"></span><span>                                   </span><span class="hs-comment">-- function or instance</span><span>
</span><span id="line-355"></span><span>
</span><span id="line-356"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TypeEqOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeEqOrigin"><span class="hs-identifier hs-var">TypeEqOrigin</span></a></span></span><span> </span><span class="hs-special">{</span><span> </span><span id="uo_actual"><span class="annot"><span class="annottext">CtOrigin -&gt; TcType
</span><a href="GHC.Tc.Types.Origin.html#uo_actual"><span class="hs-identifier hs-var hs-var">uo_actual</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span>
</span><span id="line-357"></span><span>                 </span><span class="hs-special">,</span><span> </span><span id="uo_expected"><span class="annot"><span class="annottext">CtOrigin -&gt; TcType
</span><a href="GHC.Tc.Types.Origin.html#uo_expected"><span class="hs-identifier hs-var hs-var">uo_expected</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span>
</span><span id="line-358"></span><span>                 </span><span class="hs-special">,</span><span> </span><span id="uo_thing"><span class="annot"><span class="annottext">CtOrigin -&gt; Maybe SDoc
</span><a href="GHC.Tc.Types.Origin.html#uo_thing"><span class="hs-identifier hs-var hs-var">uo_thing</span></a></span></span><span>    </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-359"></span><span>                       </span><span class="hs-comment">-- ^ The thing that has type &quot;actual&quot;</span><span>
</span><span id="line-360"></span><span>                 </span><span class="hs-special">,</span><span> </span><span id="uo_visible"><span class="annot"><span class="annottext">CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#uo_visible"><span class="hs-identifier hs-var hs-var">uo_visible</span></a></span></span><span>  </span><span class="hs-glyph">::</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-361"></span><span>                       </span><span class="hs-comment">-- ^ Is at least one of the three elements above visible?</span><span>
</span><span id="line-362"></span><span>                       </span><span class="hs-comment">-- (Errors from the polymorphic subsumption check are considered</span><span>
</span><span id="line-363"></span><span>                       </span><span class="hs-comment">-- visible.) Only used for prioritizing error messages.</span><span>
</span><span id="line-364"></span><span>                 </span><span class="hs-special">}</span><span>
</span><span id="line-365"></span><span>
</span><span id="line-366"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="KindEqOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#KindEqOrigin"><span class="hs-identifier hs-var">KindEqOrigin</span></a></span></span><span>
</span><span id="line-367"></span><span>      </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TcType"><span class="hs-identifier hs-type">TcType</span></a></span><span class="hs-special">)</span><span>     </span><span class="hs-comment">-- A kind equality arising from unifying these two types</span><span>
</span><span id="line-368"></span><span>      </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>                  </span><span class="hs-comment">-- originally arising from this</span><span>
</span><span id="line-369"></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="annot"><a href="GHC.Types.Basic.html#TypeOrKind"><span class="hs-identifier hs-type">TypeOrKind</span></a></span><span class="hs-special">)</span><span>        </span><span class="hs-comment">-- the level of the eq this arises from</span><span>
</span><span id="line-370"></span><span>
</span><span id="line-371"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="IPOccOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#IPOccOrigin"><span class="hs-identifier hs-var">IPOccOrigin</span></a></span></span><span>  </span><span class="annot"><a href="GHC.Hs.Type.html#HsIPName"><span class="hs-identifier hs-type">HsIPName</span></a></span><span>       </span><span class="hs-comment">-- Occurrence of an implicit parameter</span><span>
</span><span id="line-372"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="OverLabelOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#OverLabelOrigin"><span class="hs-identifier hs-var">OverLabelOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Data.FastString.html#FastString"><span class="hs-identifier hs-type">FastString</span></a></span><span>  </span><span class="hs-comment">-- Occurrence of an overloaded label</span><span>
</span><span id="line-373"></span><span>
</span><span id="line-374"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="LiteralOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#LiteralOrigin"><span class="hs-identifier hs-var">LiteralOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Lit.html#HsOverLit"><span class="hs-identifier hs-type">HsOverLit</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span>     </span><span class="hs-comment">-- Occurrence of a literal</span><span>
</span><span id="line-375"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="NegateOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#NegateOrigin"><span class="hs-identifier hs-var">NegateOrigin</span></a></span></span><span>                        </span><span class="hs-comment">-- Occurrence of syntactic negation</span><span>
</span><span id="line-376"></span><span>
</span><span id="line-377"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ArithSeqOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ArithSeqOrigin"><span class="hs-identifier hs-var">ArithSeqOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#ArithSeqInfo"><span class="hs-identifier hs-type">ArithSeqInfo</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- [x..], [x..y] etc</span><span>
</span><span id="line-378"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="AssocFamPatOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#AssocFamPatOrigin"><span class="hs-identifier hs-var">AssocFamPatOrigin</span></a></span></span><span>   </span><span class="hs-comment">-- When matching the patterns of an associated</span><span>
</span><span id="line-379"></span><span>                        </span><span class="hs-comment">-- family instance with that of its parent class</span><span>
</span><span id="line-380"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="SectionOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#SectionOrigin"><span class="hs-identifier hs-var">SectionOrigin</span></a></span></span><span>
</span><span id="line-381"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TupleOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TupleOrigin"><span class="hs-identifier hs-var">TupleOrigin</span></a></span></span><span>         </span><span class="hs-comment">-- (..,..)</span><span>
</span><span id="line-382"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ExprSigOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ExprSigOrigin"><span class="hs-identifier hs-var">ExprSigOrigin</span></a></span></span><span>       </span><span class="hs-comment">-- e :: ty</span><span>
</span><span id="line-383"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatSigOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatSigOrigin"><span class="hs-identifier hs-var">PatSigOrigin</span></a></span></span><span>        </span><span class="hs-comment">-- p :: ty</span><span>
</span><span id="line-384"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatOrigin"><span class="hs-identifier hs-var">PatOrigin</span></a></span></span><span>           </span><span class="hs-comment">-- Instantiating a polytyped pattern at a constructor</span><span>
</span><span id="line-385"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ProvCtxtOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ProvCtxtOrigin"><span class="hs-identifier hs-var">ProvCtxtOrigin</span></a></span></span><span>      </span><span class="hs-comment">-- The &quot;provided&quot; context of a pattern synonym signature</span><span>
</span><span id="line-386"></span><span>        </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Binds.html#PatSynBind"><span class="hs-identifier hs-type">PatSynBind</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- Information about the pattern synonym, in</span><span>
</span><span id="line-387"></span><span>                                 </span><span class="hs-comment">-- particular the name and the right-hand side</span><span>
</span><span id="line-388"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="RecordUpdOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#RecordUpdOrigin"><span class="hs-identifier hs-var">RecordUpdOrigin</span></a></span></span><span>
</span><span id="line-389"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ViewPatOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ViewPatOrigin"><span class="hs-identifier hs-var">ViewPatOrigin</span></a></span></span><span>
</span><span id="line-390"></span><span>
</span><span id="line-391"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ScOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ScOrigin"><span class="hs-identifier hs-var">ScOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Tc.Utils.TcType.html#TypeSize"><span class="hs-identifier hs-type">TypeSize</span></a></span><span>   </span><span class="hs-comment">-- Typechecking superclasses of an instance declaration</span><span>
</span><span id="line-392"></span><span>                        </span><span class="hs-comment">-- If the instance head is C ty1 .. tyn</span><span>
</span><span id="line-393"></span><span>                        </span><span class="hs-comment">--    then TypeSize = sizeTypes [ty1, .., tyn]</span><span>
</span><span id="line-394"></span><span>                        </span><span class="hs-comment">-- See Note [Solving superclass constraints] in GHC.Tc.TyCl.Instance</span><span>
</span><span id="line-395"></span><span>
</span><span id="line-396"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DerivClauseOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivClauseOrigin"><span class="hs-identifier hs-var">DerivClauseOrigin</span></a></span></span><span>   </span><span class="hs-comment">-- Typechecking a deriving clause (as opposed to</span><span>
</span><span id="line-397"></span><span>                        </span><span class="hs-comment">-- standalone deriving).</span><span>
</span><span id="line-398"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DerivOriginDC"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivOriginDC"><span class="hs-identifier hs-var">DerivOriginDC</span></a></span></span><span> </span><span class="annot"><a href="GHC.Core.DataCon.html#DataCon"><span class="hs-identifier hs-type">DataCon</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-399"></span><span>      </span><span class="hs-comment">-- Checking constraints arising from this data con and field index. The</span><span>
</span><span id="line-400"></span><span>      </span><span class="hs-comment">-- Bool argument in DerivOriginDC and DerivOriginCoerce is True if</span><span>
</span><span id="line-401"></span><span>      </span><span class="hs-comment">-- standalong deriving (with a wildcard constraint) is being used. This</span><span>
</span><span id="line-402"></span><span>      </span><span class="hs-comment">-- is used to inform error messages on how to recommended fixes (e.g., if</span><span>
</span><span id="line-403"></span><span>      </span><span class="hs-comment">-- the argument is True, then don't recommend &quot;use standalone deriving&quot;,</span><span>
</span><span id="line-404"></span><span>      </span><span class="hs-comment">-- but rather &quot;fill in the wildcard constraint yourself&quot;).</span><span>
</span><span id="line-405"></span><span>      </span><span class="hs-comment">-- See Note [Inferring the instance context] in GHC.Tc.Deriv.Infer</span><span>
</span><span id="line-406"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DerivOriginCoerce"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivOriginCoerce"><span class="hs-identifier hs-var">DerivOriginCoerce</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Var.html#Id"><span class="hs-identifier hs-type">Id</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-407"></span><span>                        </span><span class="hs-comment">-- DerivOriginCoerce id ty1 ty2: Trying to coerce class method `id` from</span><span>
</span><span id="line-408"></span><span>                        </span><span class="hs-comment">-- `ty1` to `ty2`.</span><span>
</span><span id="line-409"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StandAloneDerivOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#StandAloneDerivOrigin"><span class="hs-identifier hs-var">StandAloneDerivOrigin</span></a></span></span><span> </span><span class="hs-comment">-- Typechecking stand-alone deriving. Useful for</span><span>
</span><span id="line-410"></span><span>                          </span><span class="hs-comment">-- constraints coming from a wildcard constraint,</span><span>
</span><span id="line-411"></span><span>                          </span><span class="hs-comment">-- e.g., deriving instance _ =&gt; Eq (Foo a)</span><span>
</span><span id="line-412"></span><span>                          </span><span class="hs-comment">-- See Note [Inferring the instance context]</span><span>
</span><span id="line-413"></span><span>                          </span><span class="hs-comment">-- in GHC.Tc.Deriv.Infer</span><span>
</span><span id="line-414"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DefaultOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DefaultOrigin"><span class="hs-identifier hs-var">DefaultOrigin</span></a></span></span><span>       </span><span class="hs-comment">-- Typechecking a default decl</span><span>
</span><span id="line-415"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DoOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DoOrigin"><span class="hs-identifier hs-var">DoOrigin</span></a></span></span><span>            </span><span class="hs-comment">-- Arising from a do expression</span><span>
</span><span id="line-416"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="DoPatOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#DoPatOrigin"><span class="hs-identifier hs-var">DoPatOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Pat.html#LPat"><span class="hs-identifier hs-type">LPat</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- Arising from a failable pattern in</span><span>
</span><span id="line-417"></span><span>                             </span><span class="hs-comment">-- a do expression</span><span>
</span><span id="line-418"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="MCompOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#MCompOrigin"><span class="hs-identifier hs-var">MCompOrigin</span></a></span></span><span>         </span><span class="hs-comment">-- Arising from a monad comprehension</span><span>
</span><span id="line-419"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="MCompPatOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#MCompPatOrigin"><span class="hs-identifier hs-var">MCompPatOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Pat.html#LPat"><span class="hs-identifier hs-type">LPat</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-comment">-- Arising from a failable pattern in a</span><span>
</span><span id="line-420"></span><span>                                </span><span class="hs-comment">-- monad comprehension</span><span>
</span><span id="line-421"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="IfOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#IfOrigin"><span class="hs-identifier hs-var">IfOrigin</span></a></span></span><span>            </span><span class="hs-comment">-- Arising from an if statement</span><span>
</span><span id="line-422"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ProcOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ProcOrigin"><span class="hs-identifier hs-var">ProcOrigin</span></a></span></span><span>          </span><span class="hs-comment">-- Arising from a proc expression</span><span>
</span><span id="line-423"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="AnnOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#AnnOrigin"><span class="hs-identifier hs-var">AnnOrigin</span></a></span></span><span>           </span><span class="hs-comment">-- An annotation</span><span>
</span><span id="line-424"></span><span>
</span><span id="line-425"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FunDepOrigin1"><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin1"><span class="hs-identifier hs-var">FunDepOrigin1</span></a></span></span><span>       </span><span class="hs-comment">-- A functional dependency from combining</span><span>
</span><span id="line-426"></span><span>        </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PredType"><span class="hs-identifier hs-type">PredType</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#RealSrcSpan"><span class="hs-identifier hs-type">RealSrcSpan</span></a></span><span>      </span><span class="hs-comment">-- This constraint arising from ...</span><span>
</span><span id="line-427"></span><span>        </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PredType"><span class="hs-identifier hs-type">PredType</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#RealSrcSpan"><span class="hs-identifier hs-type">RealSrcSpan</span></a></span><span>      </span><span class="hs-comment">-- and this constraint arising from ...</span><span>
</span><span id="line-428"></span><span>
</span><span id="line-429"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="FunDepOrigin2"><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin2"><span class="hs-identifier hs-var">FunDepOrigin2</span></a></span></span><span>       </span><span class="hs-comment">-- A functional dependency from combining</span><span>
</span><span id="line-430"></span><span>        </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PredType"><span class="hs-identifier hs-type">PredType</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>   </span><span class="hs-comment">-- This constraint arising from ...</span><span>
</span><span id="line-431"></span><span>        </span><span class="annot"><a href="GHC.Core.TyCo.Rep.html#PredType"><span class="hs-identifier hs-type">PredType</span></a></span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#SrcSpan"><span class="hs-identifier hs-type">SrcSpan</span></a></span><span>    </span><span class="hs-comment">-- and this top-level instance</span><span>
</span><span id="line-432"></span><span>        </span><span class="hs-comment">-- We only need a CtOrigin on the first, because the location</span><span>
</span><span id="line-433"></span><span>        </span><span class="hs-comment">-- is pinned on the entire error message</span><span>
</span><span id="line-434"></span><span>
</span><span id="line-435"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ExprHoleOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ExprHoleOrigin"><span class="hs-identifier hs-var">ExprHoleOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>   </span><span class="hs-comment">-- from an expression hole</span><span>
</span><span id="line-436"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="TypeHoleOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeHoleOrigin"><span class="hs-identifier hs-var">TypeHoleOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>   </span><span class="hs-comment">-- from a type hole (partial type signature)</span><span>
</span><span id="line-437"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="PatCheckOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#PatCheckOrigin"><span class="hs-identifier hs-var">PatCheckOrigin</span></a></span></span><span>      </span><span class="hs-comment">-- normalisation of a type during pattern-match checking</span><span>
</span><span id="line-438"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="UnboundOccurrenceOf"><span class="annot"><a href="GHC.Tc.Types.Origin.html#UnboundOccurrenceOf"><span class="hs-identifier hs-var">UnboundOccurrenceOf</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.Occurrence.html#OccName"><span class="hs-identifier hs-type">OccName</span></a></span><span>
</span><span id="line-439"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="ListOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#ListOrigin"><span class="hs-identifier hs-var">ListOrigin</span></a></span></span><span>          </span><span class="hs-comment">-- An overloaded list</span><span>
</span><span id="line-440"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="BracketOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#BracketOrigin"><span class="hs-identifier hs-var">BracketOrigin</span></a></span></span><span>       </span><span class="hs-comment">-- An overloaded quotation bracket</span><span>
</span><span id="line-441"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="StaticOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#StaticOrigin"><span class="hs-identifier hs-var">StaticOrigin</span></a></span></span><span>        </span><span class="hs-comment">-- A static form</span><span>
</span><span id="line-442"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="Shouldn%27tHappenOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span></span><span> </span><span class="annot"><a href="../../base/src/GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-443"></span><span>                            </span><span class="hs-comment">-- the user should never see this one,</span><span>
</span><span id="line-444"></span><span>                            </span><span class="hs-comment">-- unless ImpredicativeTypes is on, where all</span><span>
</span><span id="line-445"></span><span>                            </span><span class="hs-comment">-- bets are off</span><span>
</span><span id="line-446"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="InstProvidedOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstProvidedOrigin"><span class="hs-identifier hs-var">InstProvidedOrigin</span></a></span></span><span> </span><span class="annot"><a href="GHC.Unit.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="annot"><a href="GHC.Core.InstEnv.html#ClsInst"><span class="hs-identifier hs-type">ClsInst</span></a></span><span>
</span><span id="line-447"></span><span>        </span><span class="hs-comment">-- Skolem variable arose when we were testing if an instance</span><span>
</span><span id="line-448"></span><span>        </span><span class="hs-comment">-- is solvable or not.</span><span>
</span><span id="line-449"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="NonLinearPatternOrigin"><span class="annot"><a href="GHC.Tc.Types.Origin.html#NonLinearPatternOrigin"><span class="hs-identifier hs-var">NonLinearPatternOrigin</span></a></span></span><span>
</span><span id="line-450"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="UsageEnvironmentOf"><span class="annot"><a href="GHC.Tc.Types.Origin.html#UsageEnvironmentOf"><span class="hs-identifier hs-var">UsageEnvironmentOf</span></a></span></span><span> </span><span class="annot"><a href="GHC.Types.Name.html#Name"><span class="hs-identifier hs-type">Name</span></a></span><span>
</span><span id="line-451"></span><span>
</span><span id="line-452"></span><span class="hs-comment">-- An origin is visible if the place where the constraint arises is manifest</span><span>
</span><span id="line-453"></span><span class="hs-comment">-- in user code. Currently, all origins are visible except for invisible</span><span>
</span><span id="line-454"></span><span class="hs-comment">-- TypeEqOrigins. This is used when choosing which error of</span><span>
</span><span id="line-455"></span><span class="hs-comment">-- several to report</span><span>
</span><span id="line-456"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier hs-type">isVisibleOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-457"></span><span id="isVisibleOrigin"><span class="annot"><span class="annottext">isVisibleOrigin :: CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier hs-var hs-var">isVisibleOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeEqOrigin"><span class="hs-identifier hs-type">TypeEqOrigin</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">uo_visible :: CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#uo_visible"><span class="hs-identifier hs-var">uo_visible</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680880516"><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680880516"><span class="hs-identifier hs-var">vis</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="#local-6989586621680880516"><span class="hs-identifier hs-var">vis</span></a></span><span>
</span><span id="line-458"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier hs-var">isVisibleOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#KindEqOrigin"><span class="hs-identifier hs-type">KindEqOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe TcType
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880515"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880515"><span class="hs-identifier hs-var">sub_orig</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe TypeOrKind
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier hs-var">isVisibleOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880515"><span class="hs-identifier hs-var">sub_orig</span></a></span><span>
</span><span id="line-459"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isVisibleOrigin"><span class="hs-identifier hs-var">isVisibleOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><span class="hs-identifier">_</span></span><span>                                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-460"></span><span>
</span><span id="line-461"></span><span class="hs-comment">-- Converts a visible origin to an invisible one, if possible. Currently,</span><span>
</span><span id="line-462"></span><span class="hs-comment">-- this works only for TypeEqOrigin</span><span>
</span><span id="line-463"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#toInvisibleOrigin"><span class="hs-identifier hs-type">toInvisibleOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-464"></span><span id="toInvisibleOrigin"><span class="annot"><span class="annottext">toInvisibleOrigin :: CtOrigin -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#toInvisibleOrigin"><span class="hs-identifier hs-var hs-var">toInvisibleOrigin</span></a></span></span><span> </span><span id="local-6989586621680880514"><span class="annot"><span class="annottext">orig :: CtOrigin
</span><a href="#local-6989586621680880514"><span class="hs-identifier hs-var">orig</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeEqOrigin"><span class="hs-identifier hs-type">TypeEqOrigin</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880514"><span class="hs-identifier hs-var">orig</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">uo_visible :: Bool
</span><a href="GHC.Tc.Types.Origin.html#uo_visible"><span class="hs-identifier hs-var">uo_visible</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-465"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#toInvisibleOrigin"><span class="hs-identifier hs-var">toInvisibleOrigin</span></a></span><span> </span><span id="local-6989586621680880513"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880513"><span class="hs-identifier hs-var">orig</span></a></span></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880513"><span class="hs-identifier hs-var">orig</span></a></span><span>
</span><span id="line-466"></span><span>
</span><span id="line-467"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-type">isGivenOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Bool</span></span><span>
</span><span id="line-468"></span><span id="isGivenOrigin"><span class="annot"><span class="annottext">isGivenOrigin :: CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var hs-var">isGivenOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#GivenOrigin"><span class="hs-identifier hs-type">GivenOrigin</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>
</span><span id="line-469"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin1"><span class="hs-identifier hs-type">FunDepOrigin1</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880512"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880512"><span class="hs-identifier hs-var">o1</span></a></span></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TcType
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880511"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880511"><span class="hs-identifier hs-var">o2</span></a></span></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880512"><span class="hs-identifier hs-var">o1</span></a></span><span> </span><span class="annot"><span class="annottext">Bool -&gt; Bool -&gt; Bool
</span><span class="hs-operator hs-var">&amp;&amp;</span></span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880511"><span class="hs-identifier hs-var">o2</span></a></span><span>
</span><span id="line-470"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin2"><span class="hs-identifier hs-type">FunDepOrigin2</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880509"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880509"><span class="hs-identifier hs-var">o1</span></a></span></span><span> </span><span class="annot"><span class="annottext">TcType
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; Bool
</span><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880509"><span class="hs-identifier hs-var">o1</span></a></span><span>
</span><span id="line-471"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#isGivenOrigin"><span class="hs-identifier hs-var">isGivenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><span class="hs-identifier">_</span></span><span>                             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span>
</span><span id="line-472"></span><span>
</span><span id="line-473"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621680880506"><span class="annot"><a href="GHC.Utils.Outputable.html#Outputable"><span class="hs-identifier hs-type">Outputable</span></a></span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-474"></span><span>  </span><span id="local-6989586621680880505"><span class="annot"><span class="annottext">ppr :: CtOrigin -&gt; SDoc
</span><a href="#local-6989586621680880505"><span class="hs-identifier hs-var hs-var hs-var hs-var">ppr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span>
</span><span id="line-475"></span><span>
</span><span id="line-476"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-type">ctoHerald</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-477"></span><span id="ctoHerald"><span class="annot"><span class="annottext">ctoHerald :: SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var hs-var">ctoHerald</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;arising from&quot;</span></span><span>
</span><span id="line-478"></span><span>
</span><span id="line-479"></span><span class="hs-comment">-- | Extract a suitable CtOrigin from a HsExpr</span><span>
</span><span id="line-480"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-type">lexprCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-481"></span><span id="lexprCtOrigin"><span class="annot"><span class="annottext">lexprCtOrigin :: LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var hs-var">lexprCtOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880502"><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880502"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880502"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-482"></span><span>
</span><span id="line-483"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-type">exprCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#HsExpr"><span class="hs-identifier hs-type">HsExpr</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-484"></span><span id="exprCtOrigin"><span class="annot"><span class="annottext">exprCtOrigin :: HsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var hs-var">exprCtOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsVar"><span class="hs-identifier hs-type">HsVar</span></a></span><span> </span><span class="annot"><span class="annottext">XVar GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880500"><span class="annot"><span class="annottext">IdP GhcRn
</span><a href="#local-6989586621680880500"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Name -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#OccurrenceOf"><span class="hs-identifier hs-var">OccurrenceOf</span></a></span><span> </span><span class="annot"><span class="annottext">Name
IdP GhcRn
</span><a href="#local-6989586621680880500"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-485"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsUnboundVar"><span class="hs-identifier hs-type">HsUnboundVar</span></a></span><span> </span><span class="annot"><span class="annottext">XUnboundVar GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880498"><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880498"><span class="hs-identifier hs-var">uv</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">OccName -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#UnboundOccurrenceOf"><span class="hs-identifier hs-var">UnboundOccurrenceOf</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880498"><span class="hs-identifier hs-var">uv</span></a></span><span>
</span><span id="line-486"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsConLikeOut"><span class="hs-identifier hs-type">HsConLikeOut</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;exprCtOrigin HsConLikeOut&quot;</span></span><span>
</span><span id="line-487"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsRecFld"><span class="hs-identifier hs-type">HsRecFld</span></a></span><span> </span><span class="annot"><span class="annottext">XRecFld GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880494"><span class="annot"><span class="annottext">AmbiguousFieldOcc GhcRn
</span><a href="#local-6989586621680880494"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RdrName -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#OccurrenceOfRecSel"><span class="hs-identifier hs-var">OccurrenceOfRecSel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">AmbiguousFieldOcc GhcRn -&gt; RdrName
forall (p :: Pass). AmbiguousFieldOcc (GhcPass p) -&gt; RdrName
</span><a href="GHC.Hs.Type.html#rdrNameAmbiguousFieldOcc"><span class="hs-identifier hs-var">rdrNameAmbiguousFieldOcc</span></a></span><span> </span><span class="annot"><span class="annottext">AmbiguousFieldOcc GhcRn
</span><a href="#local-6989586621680880494"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-488"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsOverLabel"><span class="hs-identifier hs-type">HsOverLabel</span></a></span><span> </span><span class="annot"><span class="annottext">XOverLabel GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe (IdP GhcRn)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880491"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880491"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">FastString -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#OverLabelOrigin"><span class="hs-identifier hs-var">OverLabelOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880491"><span class="hs-identifier hs-var">l</span></a></span><span>
</span><span id="line-489"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsIPVar"><span class="hs-identifier hs-type">HsIPVar</span></a></span><span> </span><span class="annot"><span class="annottext">XIPVar GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880489"><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680880489"><span class="hs-identifier hs-var">ip</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsIPName -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#IPOccOrigin"><span class="hs-identifier hs-var">IPOccOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680880489"><span class="hs-identifier hs-var">ip</span></a></span><span>
</span><span id="line-490"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsOverLit"><span class="hs-identifier hs-type">HsOverLit</span></a></span><span> </span><span class="annot"><span class="annottext">XOverLitE GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880487"><span class="annot"><span class="annottext">HsOverLit GhcRn
</span><a href="#local-6989586621680880487"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsOverLit GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#LiteralOrigin"><span class="hs-identifier hs-var">LiteralOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">HsOverLit GhcRn
</span><a href="#local-6989586621680880487"><span class="hs-identifier hs-var">lit</span></a></span><span>
</span><span id="line-491"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsLit"><span class="hs-identifier hs-type">HsLit</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;concrete literal&quot;</span></span><span>
</span><span id="line-492"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsLam"><span class="hs-identifier hs-type">HsLam</span></a></span><span> </span><span class="annot"><span class="annottext">XLam GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880484"><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880484"><span class="hs-identifier hs-var">matches</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier hs-var">matchesCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880484"><span class="hs-identifier hs-var">matches</span></a></span><span>
</span><span id="line-493"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsLamCase"><span class="hs-identifier hs-type">HsLamCase</span></a></span><span> </span><span class="annot"><span class="annottext">XLamCase GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880482"><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880482"><span class="hs-identifier hs-var">ms</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier hs-var">matchesCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880482"><span class="hs-identifier hs-var">ms</span></a></span><span>
</span><span id="line-494"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsApp"><span class="hs-identifier hs-type">HsApp</span></a></span><span> </span><span class="annot"><span class="annottext">XApp GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880480"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880480"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880480"><span class="hs-identifier hs-var">e1</span></a></span><span>
</span><span id="line-495"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsAppType"><span class="hs-identifier hs-type">HsAppType</span></a></span><span> </span><span class="annot"><span class="annottext">XAppTypeE GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880478"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880478"><span class="hs-identifier hs-var">e1</span></a></span></span><span> </span><span class="annot"><span class="annottext">LHsWcType (NoGhcTc GhcRn)
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880478"><span class="hs-identifier hs-var">e1</span></a></span><span>
</span><span id="line-496"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#OpApp"><span class="hs-identifier hs-type">OpApp</span></a></span><span> </span><span class="annot"><span class="annottext">XOpApp GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880476"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880476"><span class="hs-identifier hs-var">op</span></a></span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880476"><span class="hs-identifier hs-var">op</span></a></span><span>
</span><span id="line-497"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#NegApp"><span class="hs-identifier hs-type">NegApp</span></a></span><span> </span><span class="annot"><span class="annottext">XNegApp GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880474"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880474"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="annot"><span class="annottext">SyntaxExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880474"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-498"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsPar"><span class="hs-identifier hs-type">HsPar</span></a></span><span> </span><span class="annot"><span class="annottext">XPar GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880472"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880472"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880472"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-499"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#SectionL"><span class="hs-identifier hs-type">SectionL</span></a></span><span> </span><span class="annot"><span class="annottext">XSectionL GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#SectionOrigin"><span class="hs-identifier hs-var">SectionOrigin</span></a></span><span>
</span><span id="line-500"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#SectionR"><span class="hs-identifier hs-type">SectionR</span></a></span><span> </span><span class="annot"><span class="annottext">XSectionR GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#SectionOrigin"><span class="hs-identifier hs-var">SectionOrigin</span></a></span><span>
</span><span id="line-501"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#ExplicitTuple"><span class="hs-identifier hs-type">ExplicitTuple</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;explicit tuple&quot;</span></span><span>
</span><span id="line-502"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#ExplicitSum"><span class="hs-identifier hs-type">ExplicitSum</span></a></span><span class="hs-special">{</span><span class="hs-special">}</span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;explicit sum&quot;</span></span><span>
</span><span id="line-503"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsCase"><span class="hs-identifier hs-type">HsCase</span></a></span><span> </span><span class="annot"><span class="annottext">XCase GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880466"><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880466"><span class="hs-identifier hs-var">matches</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier hs-var">matchesCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">MatchGroup GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880466"><span class="hs-identifier hs-var">matches</span></a></span><span>
</span><span id="line-504"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsIf"><span class="hs-identifier hs-type">HsIf</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;if expression&quot;</span></span><span>
</span><span id="line-505"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsMultiIf"><span class="hs-identifier hs-type">HsMultiIf</span></a></span><span> </span><span class="annot"><span class="annottext">XMultiIf GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880463"><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880463"><span class="hs-identifier hs-var">rhs</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)] -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lGRHSCtOrigin"><span class="hs-identifier hs-var">lGRHSCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880463"><span class="hs-identifier hs-var">rhs</span></a></span><span>
</span><span id="line-506"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsLet"><span class="hs-identifier hs-type">HsLet</span></a></span><span> </span><span class="annot"><span class="annottext">XLet GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">LHsLocalBinds GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880460"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880460"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880460"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-507"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsDo"><span class="hs-identifier hs-type">HsDo</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#DoOrigin"><span class="hs-identifier hs-var">DoOrigin</span></a></span><span>
</span><span id="line-508"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#ExplicitList"><span class="hs-identifier hs-type">ExplicitList</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;list&quot;</span></span><span>
</span><span id="line-509"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#RecordCon"><span class="hs-identifier hs-type">RecordCon</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;record construction&quot;</span></span><span>
</span><span id="line-510"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#RecordUpd"><span class="hs-identifier hs-type">RecordUpd</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;record update&quot;</span></span><span>
</span><span id="line-511"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#ExprWithTySig"><span class="hs-identifier hs-type">ExprWithTySig</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#ExprSigOrigin"><span class="hs-identifier hs-var">ExprSigOrigin</span></a></span><span>
</span><span id="line-512"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#ArithSeq"><span class="hs-identifier hs-type">ArithSeq</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;arithmetic sequence&quot;</span></span><span>
</span><span id="line-513"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsPragE"><span class="hs-identifier hs-type">HsPragE</span></a></span><span> </span><span class="annot"><span class="annottext">XPragE GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">HsPragE GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880452"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880452"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880452"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-514"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsBracket"><span class="hs-identifier hs-type">HsBracket</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TH bracket&quot;</span></span><span>
</span><span id="line-515"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsRnBracketOut"><span class="hs-identifier hs-type">HsRnBracketOut</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;HsRnBracketOut&quot;</span></span><span>
</span><span id="line-516"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsTcBracketOut"><span class="hs-identifier hs-type">HsTcBracketOut</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;exprCtOrigin HsTcBracketOut&quot;</span></span><span>
</span><span id="line-517"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsSpliceE"><span class="hs-identifier hs-type">HsSpliceE</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TH splice&quot;</span></span><span>
</span><span id="line-518"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsProc"><span class="hs-identifier hs-type">HsProc</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;proc&quot;</span></span><span>
</span><span id="line-519"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsStatic"><span class="hs-identifier hs-type">HsStatic</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;static expression&quot;</span></span><span>
</span><span id="line-520"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsTick"><span class="hs-identifier hs-type">HsTick</span></a></span><span> </span><span class="annot"><span class="annottext">XTick GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Tickish (IdP GhcRn)
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880444"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880444"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880444"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-521"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsBinTick"><span class="hs-identifier hs-type">HsBinTick</span></a></span><span> </span><span class="annot"><span class="annottext">XBinTick GhcRn
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880442"><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880442"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lexprCtOrigin"><span class="hs-identifier hs-var">lexprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">LHsExpr GhcRn
</span><a href="#local-6989586621680880442"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-522"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#XExpr"><span class="hs-identifier hs-type">XExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#HsExpanded"><span class="hs-identifier hs-type">HsExpanded</span></a></span><span> </span><span id="local-6989586621680880439"><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880439"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880439"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-523"></span><span>
</span><span id="line-524"></span><span class="hs-comment">-- | Extract a suitable CtOrigin from a MatchGroup</span><span>
</span><span id="line-525"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier hs-type">matchesCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#MatchGroup"><span class="hs-identifier hs-type">MatchGroup</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-526"></span><span id="matchesCtOrigin"><span class="annot"><span class="annottext">matchesCtOrigin :: MatchGroup GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#matchesCtOrigin"><span class="hs-identifier hs-var hs-var">matchesCtOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#MG"><span class="hs-identifier hs-type">MG</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">mg_alts :: forall p body. MatchGroup p body -&gt; Located [LMatch p body]
</span><a href="GHC.Hs.Expr.html#mg_alts"><span class="hs-identifier hs-var">mg_alts</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680880436"><span class="annot"><span class="annottext">Located [LMatch GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880436"><span class="hs-identifier hs-var">alts</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-527"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880435"><span class="annot"><span class="annottext">Match GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880435"><span class="hs-identifier hs-var">match</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Located [LMatch GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880436"><span class="hs-identifier hs-var">alts</span></a></span><span>
</span><span id="line-528"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#Match"><span class="hs-identifier hs-type">Match</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">m_grhss :: forall p body. Match p body -&gt; GRHSs p body
</span><a href="GHC.Hs.Expr.html#m_grhss"><span class="hs-identifier hs-var">m_grhss</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680880432"><span class="annot"><span class="annottext">GRHSs GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880432"><span class="hs-identifier hs-var">grhss</span></a></span></span><span> </span><span class="hs-special">}</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Match GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880435"><span class="hs-identifier hs-var">match</span></a></span><span>
</span><span id="line-529"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">GRHSs GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#grhssCtOrigin"><span class="hs-identifier hs-var">grhssCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">GRHSs GhcRn (LHsExpr GhcRn)
</span><a href="#local-6989586621680880432"><span class="hs-identifier hs-var">grhss</span></a></span><span>
</span><span id="line-530"></span><span>
</span><span id="line-531"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-532"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;multi-way match&quot;</span></span><span>
</span><span id="line-533"></span><span>
</span><span id="line-534"></span><span class="hs-comment">-- | Extract a suitable CtOrigin from guarded RHSs</span><span>
</span><span id="line-535"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#grhssCtOrigin"><span class="hs-identifier hs-type">grhssCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Hs.Expr.html#GRHSs"><span class="hs-identifier hs-type">GRHSs</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-536"></span><span id="grhssCtOrigin"><span class="annot"><span class="annottext">grhssCtOrigin :: GRHSs GhcRn (LHsExpr GhcRn) -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#grhssCtOrigin"><span class="hs-identifier hs-var hs-var">grhssCtOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#GRHSs"><span class="hs-identifier hs-type">GRHSs</span></a></span><span> </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">grhssGRHSs :: forall p body. GRHSs p body -&gt; [LGRHS p body]
</span><a href="GHC.Hs.Expr.html#grhssGRHSs"><span class="hs-identifier hs-var">grhssGRHSs</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621680880429"><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880429"><span class="hs-identifier hs-var">lgrhss</span></a></span></span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)] -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lGRHSCtOrigin"><span class="hs-identifier hs-var">lGRHSCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)]
</span><a href="#local-6989586621680880429"><span class="hs-identifier hs-var">lgrhss</span></a></span><span>
</span><span id="line-537"></span><span>
</span><span id="line-538"></span><span class="hs-comment">-- | Extract a suitable CtOrigin from a list of guarded RHSs</span><span>
</span><span id="line-539"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#lGRHSCtOrigin"><span class="hs-identifier hs-type">lGRHSCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Hs.Expr.html#LGRHS"><span class="hs-identifier hs-type">LGRHS</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#LHsExpr"><span class="hs-identifier hs-type">LHsExpr</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Extension.html#GhcRn"><span class="hs-identifier hs-type">GhcRn</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span>
</span><span id="line-540"></span><span id="lGRHSCtOrigin"><span class="annot"><span class="annottext">lGRHSCtOrigin :: [LGRHS GhcRn (LHsExpr GhcRn)] -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#lGRHSCtOrigin"><span class="hs-identifier hs-var hs-var">lGRHSCtOrigin</span></a></span></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Hs.Expr.html#GRHS"><span class="hs-identifier hs-type">GRHS</span></a></span><span> </span><span class="annot"><span class="annottext">XCGRHS GhcRn (LHsExpr GhcRn)
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">[GuardLStmt GhcRn]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880427"><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880427"><span class="hs-identifier hs-var">e</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">]</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#exprCtOrigin"><span class="hs-identifier hs-var">exprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">HsExpr GhcRn
</span><a href="#local-6989586621680880427"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-541"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#lGRHSCtOrigin"><span class="hs-identifier hs-var">lGRHSCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">[LGRHS GhcRn (LHsExpr GhcRn)]
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-var">Shouldn'tHappenOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;multi-way GRHS&quot;</span></span><span>
</span><span id="line-542"></span><span>
</span><span id="line-543"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-type">pprCtOrigin</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-544"></span><span class="hs-comment">-- &quot;arising from ...&quot;</span><span>
</span><span id="line-545"></span><span class="hs-comment">-- Not an instance of Outputable because of the &quot;arising from&quot; prefix</span><span>
</span><span id="line-546"></span><span id="pprCtOrigin"><span class="annot"><span class="annottext">pprCtOrigin :: CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var hs-var">pprCtOrigin</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#GivenOrigin"><span class="hs-identifier hs-type">GivenOrigin</span></a></span><span> </span><span id="local-6989586621680880426"><span class="annot"><span class="annottext">SkolemInfo
</span><a href="#local-6989586621680880426"><span class="hs-identifier hs-var">sk</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">SkolemInfo
</span><a href="#local-6989586621680880426"><span class="hs-identifier hs-var">sk</span></a></span><span>
</span><span id="line-547"></span><span>
</span><span id="line-548"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#SpecPragOrigin"><span class="hs-identifier hs-type">SpecPragOrigin</span></a></span><span> </span><span id="local-6989586621680880425"><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880425"><span class="hs-identifier hs-var">ctxt</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-549"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="#local-6989586621680880425"><span class="hs-identifier hs-var">ctxt</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-550"></span><span>       </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunSigCtxt"><span class="hs-identifier hs-type">FunSigCtxt</span></a></span><span> </span><span id="local-6989586621680880424"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880424"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;for&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880424"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-551"></span><span>       </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><a href="GHC.Tc.Types.Origin.html#SpecInstCtxt"><span class="hs-identifier hs-var">SpecInstCtxt</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a SPECIALISE INSTANCE pragma&quot;</span></span><span>
</span><span id="line-552"></span><span>       </span><span class="annot"><span class="annottext">UserTypeCtxt
</span><span class="hs-identifier">_</span></span><span>              </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a SPECIALISE pragma&quot;</span></span><span>  </span><span class="hs-comment">-- Never happens I think</span><span>
</span><span id="line-553"></span><span>
</span><span id="line-554"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin1"><span class="hs-identifier hs-type">FunDepOrigin1</span></a></span><span> </span><span id="local-6989586621680880423"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880423"><span class="hs-identifier hs-var">pred1</span></a></span></span><span> </span><span id="local-6989586621680880422"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880422"><span class="hs-identifier hs-var">orig1</span></a></span></span><span> </span><span id="local-6989586621680880421"><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680880421"><span class="hs-identifier hs-var">loc1</span></a></span></span><span> </span><span id="local-6989586621680880420"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880420"><span class="hs-identifier hs-var">pred2</span></a></span></span><span> </span><span id="local-6989586621680880419"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880419"><span class="hs-identifier hs-var">orig2</span></a></span></span><span> </span><span id="local-6989586621680880418"><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680880418"><span class="hs-identifier hs-var">loc2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-555"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a functional dependency between constraints:&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-556"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880423"><span class="hs-identifier hs-var">pred1</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880422"><span class="hs-identifier hs-var">orig1</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;at&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680880421"><span class="hs-identifier hs-var">loc1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-557"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880420"><span class="hs-identifier hs-var">pred2</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880419"><span class="hs-identifier hs-var">orig2</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;at&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">RealSrcSpan
</span><a href="#local-6989586621680880418"><span class="hs-identifier hs-var">loc2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-558"></span><span>
</span><span id="line-559"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#FunDepOrigin2"><span class="hs-identifier hs-type">FunDepOrigin2</span></a></span><span> </span><span id="local-6989586621680880417"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880417"><span class="hs-identifier hs-var">pred1</span></a></span></span><span> </span><span id="local-6989586621680880416"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880416"><span class="hs-identifier hs-var">orig1</span></a></span></span><span> </span><span id="local-6989586621680880415"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880415"><span class="hs-identifier hs-var">pred2</span></a></span></span><span> </span><span id="local-6989586621680880414"><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680880414"><span class="hs-identifier hs-var">loc2</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-560"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a functional dependency between:&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-561"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;constraint&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880417"><span class="hs-identifier hs-var">pred1</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-562"></span><span>                    </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880416"><span class="hs-identifier hs-var">orig1</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-563"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;instance&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880415"><span class="hs-identifier hs-var">pred2</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-564"></span><span>                    </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;at&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><a href="#local-6989586621680880414"><span class="hs-identifier hs-var">loc2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-565"></span><span>
</span><span id="line-566"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#KindEqOrigin"><span class="hs-identifier hs-type">KindEqOrigin</span></a></span><span> </span><span id="local-6989586621680880413"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880413"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../base/src/GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span id="local-6989586621680880412"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880412"><span class="hs-identifier hs-var">t2</span></a></span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe TypeOrKind
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-567"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a kind equality arising from&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-568"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880413"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'~'</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880412"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-569"></span><span>
</span><span id="line-570"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#AssocFamPatOrigin"><span class="hs-identifier hs-var">AssocFamPatOrigin</span></a></span><span>
</span><span id="line-571"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;when matching a family LHS with its class instance head&quot;</span></span><span>
</span><span id="line-572"></span><span>
</span><span id="line-573"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#KindEqOrigin"><span class="hs-identifier hs-type">KindEqOrigin</span></a></span><span> </span><span id="local-6989586621680880410"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880410"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe TcType
</span><a href="../../base/src/GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Maybe TypeOrKind
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-574"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a kind equality when matching&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-575"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880410"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-576"></span><span>
</span><span id="line-577"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UnboundOccurrenceOf"><span class="hs-identifier hs-type">UnboundOccurrenceOf</span></a></span><span> </span><span id="local-6989586621680880409"><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880409"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-578"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an undeclared identifier&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880409"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-579"></span><span>
</span><span id="line-580"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivOriginDC"><span class="hs-identifier hs-type">DerivOriginDC</span></a></span><span> </span><span id="local-6989586621680880408"><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880408"><span class="hs-identifier hs-var">dc</span></a></span></span><span> </span><span id="local-6989586621680880407"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680880407"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-581"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#speakNth"><span class="hs-identifier hs-var">speakNth</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680880407"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-582"></span><span>          </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;field of&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DataCon -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880408"><span class="hs-identifier hs-var">dc</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-583"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;type&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Scaled TcType -&gt; TcType
forall a. Scaled a -&gt; a
</span><a href="GHC.Core.TyCo.Rep.html#scaledThing"><span class="hs-identifier hs-var">scaledThing</span></a></span><span> </span><span class="annot"><span class="annottext">Scaled TcType
</span><a href="#local-6989586621680880405"><span class="hs-identifier hs-var">ty</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-584"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-585"></span><span>    </span><span id="local-6989586621680880405"><span class="annot"><span class="annottext">ty :: Scaled TcType
</span><a href="#local-6989586621680880405"><span class="hs-identifier hs-var hs-var">ty</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DataCon -&gt; [Scaled TcType]
</span><a href="GHC.Core.DataCon.html#dataConOrigArgTys"><span class="hs-identifier hs-var">dataConOrigArgTys</span></a></span><span> </span><span class="annot"><span class="annottext">DataCon
</span><a href="#local-6989586621680880408"><span class="hs-identifier hs-var">dc</span></a></span><span> </span><span class="annot"><span class="annottext">[Scaled TcType] -&gt; Int -&gt; Scaled TcType
forall a. [a] -&gt; Int -&gt; a
</span><a href="../../base/src/GHC.List.html#%21%21"><span class="hs-operator hs-var">!!</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621680880407"><span class="hs-identifier hs-var">n</span></a></span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#-"><span class="hs-glyph hs-var">-</span></a></span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>
</span><span id="line-586"></span><span>
</span><span id="line-587"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DerivOriginCoerce"><span class="hs-identifier hs-type">DerivOriginCoerce</span></a></span><span> </span><span id="local-6989586621680880399"><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680880399"><span class="hs-identifier hs-var">meth</span></a></span></span><span> </span><span id="local-6989586621680880398"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880398"><span class="hs-identifier hs-var">ty1</span></a></span></span><span> </span><span id="local-6989586621680880397"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880397"><span class="hs-identifier hs-var">ty2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-588"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the coercion of the method&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Id -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Id
</span><a href="#local-6989586621680880399"><span class="hs-identifier hs-var">meth</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-589"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;from type&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880398"><span class="hs-identifier hs-var">ty1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-590"></span><span>              </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#nest"><span class="hs-identifier hs-var">nest</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">(SDoc -&gt; SDoc) -&gt; SDoc -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;to type&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880397"><span class="hs-identifier hs-var">ty2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-591"></span><span>
</span><span id="line-592"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#DoPatOrigin"><span class="hs-identifier hs-type">DoPatOrigin</span></a></span><span> </span><span id="local-6989586621680880396"><span class="annot"><span class="annottext">LPat GhcRn
</span><a href="#local-6989586621680880396"><span class="hs-identifier hs-var">pat</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-593"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a do statement&quot;</span></span><span>
</span><span id="line-594"></span><span>      </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%24%24"><span class="hs-operator hs-var">$$</span></a></span><span>
</span><span id="line-595"></span><span>      </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;with the failable pattern&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Located (Pat GhcRn) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (Pat GhcRn)
LPat GhcRn
</span><a href="#local-6989586621680880396"><span class="hs-identifier hs-var">pat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-596"></span><span>
</span><span id="line-597"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#MCompPatOrigin"><span class="hs-identifier hs-type">MCompPatOrigin</span></a></span><span> </span><span id="local-6989586621680880394"><span class="annot"><span class="annottext">LPat GhcRn
</span><a href="#local-6989586621680880394"><span class="hs-identifier hs-var">pat</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-598"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the failable pattern&quot;</span></span><span>
</span><span id="line-599"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Located (Pat GhcRn) -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Located (Pat GhcRn)
LPat GhcRn
</span><a href="#local-6989586621680880394"><span class="hs-identifier hs-var">pat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-600"></span><span>           </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;in a statement in a monad comprehension&quot;</span></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-601"></span><span>
</span><span id="line-602"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#Shouldn%27tHappenOrigin"><span class="hs-identifier hs-type">Shouldn'tHappenOrigin</span></a></span><span> </span><span id="local-6989586621680880392"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680880392"><span class="hs-identifier hs-var">note</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-603"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(SDocContext -&gt; Bool) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a. (SDocContext -&gt; a) -&gt; (a -&gt; SDoc) -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sdocOption"><span class="hs-identifier hs-var">sdocOption</span></a></span><span> </span><span class="annot"><span class="annottext">SDocContext -&gt; Bool
</span><a href="GHC.Utils.Outputable.html#sdocImpredicativeTypes"><span class="hs-identifier hs-var hs-var">sdocImpredicativeTypes</span></a></span><span> </span><span class="annot"><span class="annottext">((Bool -&gt; SDoc) -&gt; SDoc) -&gt; (Bool -&gt; SDoc) -&gt; SDoc
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-glyph">\</span><span class="hs-glyph">case</span><span>
</span><span id="line-604"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a situation created by impredicative types&quot;</span></span><span>
</span><span id="line-605"></span><span>      </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;&lt;&lt; This should not appear in error messages. If you see this&quot;</span></span><span>
</span><span id="line-606"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;in an error message, please report a bug mentioning&quot;</span></span><span>
</span><span id="line-607"></span><span>                        </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621680880392"><span class="hs-identifier hs-var">note</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;at&quot;</span></span><span>
</span><span id="line-608"></span><span>                    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;https://gitlab.haskell.org/ghc/ghc/wikis/report-a-bug &gt;&gt;&quot;</span></span><span>
</span><span id="line-609"></span><span>                    </span><span class="hs-special">]</span><span>
</span><span id="line-610"></span><span>
</span><span id="line-611"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ProvCtxtOrigin"><span class="hs-identifier hs-type">ProvCtxtOrigin</span></a></span><span> </span><span class="annot"><a href="GHC.Hs.Binds.html#PSB"><span class="hs-identifier hs-type">PSB</span></a></span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">psb_id :: forall idL idR. PatSynBind idL idR -&gt; Located (IdP idL)
</span><a href="GHC.Hs.Binds.html#psb_id"><span class="hs-identifier hs-var">psb_id</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Types.SrcLoc.html#L"><span class="hs-identifier hs-type">L</span></a></span><span> </span><span class="annot"><span class="annottext">SrcSpan
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621680880387"><span class="annot"><span class="annottext">IdP GhcRn
</span><a href="#local-6989586621680880387"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-612"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; Int -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hang"><span class="hs-identifier hs-var">hang</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the \&quot;provided\&quot; constraints claimed by&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-613"></span><span>       </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the signature of&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
IdP GhcRn
</span><a href="#local-6989586621680880387"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-614"></span><span>
</span><span id="line-615"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#InstProvidedOrigin"><span class="hs-identifier hs-type">InstProvidedOrigin</span></a></span><span> </span><span id="local-6989586621680880386"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680880386"><span class="hs-identifier hs-var">mod</span></a></span></span><span> </span><span id="local-6989586621680880385"><span class="annot"><span class="annottext">ClsInst
</span><a href="#local-6989586621680880385"><span class="hs-identifier hs-var">cls_inst</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-616"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#vcat"><span class="hs-identifier hs-var">vcat</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;arising when attempting to show that&quot;</span></span><span>
</span><span id="line-617"></span><span>         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">ClsInst -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">ClsInst
</span><a href="#local-6989586621680880385"><span class="hs-identifier hs-var">cls_inst</span></a></span><span>
</span><span id="line-618"></span><span>         </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;is provided by&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Module -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621680880386"><span class="hs-identifier hs-var">mod</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-619"></span><span>
</span><span id="line-620"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtOrigin"><span class="hs-identifier hs-var">pprCtOrigin</span></a></span><span> </span><span id="local-6989586621680880384"><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880384"><span class="hs-identifier hs-var">simple_origin</span></a></span></span><span>
</span><span id="line-621"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SDoc
</span><a href="GHC.Tc.Types.Origin.html#ctoHerald"><span class="hs-identifier hs-var">ctoHerald</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="#local-6989586621680880384"><span class="hs-identifier hs-var">simple_origin</span></a></span><span>
</span><span id="line-622"></span><span>
</span><span id="line-623"></span><span class="hs-comment">-- | Short one-liners</span><span>
</span><span id="line-624"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-type">pprCtO</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Tc.Types.Origin.html#CtOrigin"><span class="hs-identifier hs-type">CtOrigin</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html#SDoc"><span class="hs-identifier hs-type">SDoc</span></a></span><span>
</span><span id="line-625"></span><span id="pprCtO"><span class="annot"><span class="annottext">pprCtO :: CtOrigin -&gt; SDoc
</span><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var hs-var">pprCtO</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#OccurrenceOf"><span class="hs-identifier hs-type">OccurrenceOf</span></a></span><span> </span><span id="local-6989586621680880382"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880382"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880382"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-626"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#OccurrenceOfRecSel"><span class="hs-identifier hs-type">OccurrenceOfRecSel</span></a></span><span> </span><span id="local-6989586621680880381"><span class="annot"><span class="annottext">RdrName
</span><a href="#local-6989586621680880381"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RdrName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">RdrName
</span><a href="#local-6989586621680880381"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-627"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#AppOrigin"><span class="hs-identifier hs-var">AppOrigin</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an application&quot;</span></span><span>
</span><span id="line-628"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#IPOccOrigin"><span class="hs-identifier hs-type">IPOccOrigin</span></a></span><span> </span><span id="local-6989586621680880380"><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680880380"><span class="hs-identifier hs-var">name</span></a></span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of implicit parameter&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HsIPName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsIPName
</span><a href="#local-6989586621680880380"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-629"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#OverLabelOrigin"><span class="hs-identifier hs-type">OverLabelOrigin</span></a></span><span> </span><span id="local-6989586621680880379"><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880379"><span class="hs-identifier hs-var">l</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the overloaded label&quot;</span></span><span>
</span><span id="line-630"></span><span>                                    </span><span class="hs-special">,</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'#'</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">FastString -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">FastString
</span><a href="#local-6989586621680880379"><span class="hs-identifier hs-var">l</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-631"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#RecordUpdOrigin"><span class="hs-identifier hs-var">RecordUpdOrigin</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a record update&quot;</span></span><span>
</span><span id="line-632"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#ExprSigOrigin"><span class="hs-identifier hs-var">ExprSigOrigin</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an expression type signature&quot;</span></span><span>
</span><span id="line-633"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#PatSigOrigin"><span class="hs-identifier hs-var">PatSigOrigin</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern type signature&quot;</span></span><span>
</span><span id="line-634"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#PatOrigin"><span class="hs-identifier hs-var">PatOrigin</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern&quot;</span></span><span>
</span><span id="line-635"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#ViewPatOrigin"><span class="hs-identifier hs-var">ViewPatOrigin</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a view pattern&quot;</span></span><span>
</span><span id="line-636"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#IfOrigin"><span class="hs-identifier hs-var">IfOrigin</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an if expression&quot;</span></span><span>
</span><span id="line-637"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#LiteralOrigin"><span class="hs-identifier hs-type">LiteralOrigin</span></a></span><span> </span><span id="local-6989586621680880378"><span class="annot"><span class="annottext">HsOverLit GhcRn
</span><a href="#local-6989586621680880378"><span class="hs-identifier hs-var">lit</span></a></span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the literal&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">HsOverLit GhcRn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">HsOverLit GhcRn
</span><a href="#local-6989586621680880378"><span class="hs-identifier hs-var">lit</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-638"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ArithSeqOrigin"><span class="hs-identifier hs-type">ArithSeqOrigin</span></a></span><span> </span><span id="local-6989586621680880377"><span class="annot"><span class="annottext">ArithSeqInfo GhcRn
</span><a href="#local-6989586621680880377"><span class="hs-identifier hs-var">seq</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the arithmetic sequence&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ArithSeqInfo GhcRn -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">ArithSeqInfo GhcRn
</span><a href="#local-6989586621680880377"><span class="hs-identifier hs-var">seq</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-639"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#SectionOrigin"><span class="hs-identifier hs-var">SectionOrigin</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an operator section&quot;</span></span><span>
</span><span id="line-640"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#AssocFamPatOrigin"><span class="hs-identifier hs-var">AssocFamPatOrigin</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the LHS of a family instance&quot;</span></span><span>
</span><span id="line-641"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#TupleOrigin"><span class="hs-identifier hs-var">TupleOrigin</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a tuple&quot;</span></span><span>
</span><span id="line-642"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#NegateOrigin"><span class="hs-identifier hs-var">NegateOrigin</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of syntactic negation&quot;</span></span><span>
</span><span id="line-643"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ScOrigin"><span class="hs-identifier hs-type">ScOrigin</span></a></span><span> </span><span id="local-6989586621680880376"><span class="annot"><span class="annottext">TypeSize
</span><a href="#local-6989586621680880376"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the superclasses of an instance declaration&quot;</span></span><span>
</span><span id="line-644"></span><span>                               </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%3E"><span class="hs-operator hs-var">&lt;&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#whenPprDebug"><span class="hs-identifier hs-var">whenPprDebug</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#parens"><span class="hs-identifier hs-var">parens</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeSize -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TypeSize
</span><a href="#local-6989586621680880376"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-645"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#DerivClauseOrigin"><span class="hs-identifier hs-var">DerivClauseOrigin</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;the 'deriving' clause of a data type declaration&quot;</span></span><span>
</span><span id="line-646"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#StandAloneDerivOrigin"><span class="hs-identifier hs-var">StandAloneDerivOrigin</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a 'deriving' declaration&quot;</span></span><span>
</span><span id="line-647"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#DefaultOrigin"><span class="hs-identifier hs-var">DefaultOrigin</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a 'default' declaration&quot;</span></span><span>
</span><span id="line-648"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#DoOrigin"><span class="hs-identifier hs-var">DoOrigin</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a do statement&quot;</span></span><span>
</span><span id="line-649"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#MCompOrigin"><span class="hs-identifier hs-var">MCompOrigin</span></a></span><span>           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a statement in a monad comprehension&quot;</span></span><span>
</span><span id="line-650"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#ProcOrigin"><span class="hs-identifier hs-var">ProcOrigin</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a proc expression&quot;</span></span><span>
</span><span id="line-651"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeEqOrigin"><span class="hs-identifier hs-type">TypeEqOrigin</span></a></span><span> </span><span id="local-6989586621680880375"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880375"><span class="hs-identifier hs-var">t1</span></a></span></span><span> </span><span id="local-6989586621680880374"><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880374"><span class="hs-identifier hs-var">t2</span></a></span></span><span> </span><span class="annot"><span class="annottext">Maybe SDoc
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a type equality&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#sep"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880375"><span class="hs-identifier hs-var">t1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#char"><span class="hs-identifier hs-var">char</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'~'</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TcType -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">TcType
</span><a href="#local-6989586621680880374"><span class="hs-identifier hs-var">t2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-652"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#AnnOrigin"><span class="hs-identifier hs-var">AnnOrigin</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an annotation&quot;</span></span><span>
</span><span id="line-653"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#ExprHoleOrigin"><span class="hs-identifier hs-type">ExprHoleOrigin</span></a></span><span> </span><span id="local-6989586621680880373"><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880373"><span class="hs-identifier hs-var">occ</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880373"><span class="hs-identifier hs-var">occ</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-654"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#TypeHoleOrigin"><span class="hs-identifier hs-type">TypeHoleOrigin</span></a></span><span> </span><span id="local-6989586621680880372"><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880372"><span class="hs-identifier hs-var">occ</span></a></span></span><span class="hs-special">)</span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a use of wildcard&quot;</span></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#%3C%2B%3E"><span class="hs-operator hs-var">&lt;+&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">OccName -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">OccName
</span><a href="#local-6989586621680880372"><span class="hs-identifier hs-var">occ</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-655"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#PatCheckOrigin"><span class="hs-identifier hs-var">PatCheckOrigin</span></a></span><span>        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a pattern-match completeness check&quot;</span></span><span>
</span><span id="line-656"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#ListOrigin"><span class="hs-identifier hs-var">ListOrigin</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;an overloaded list&quot;</span></span><span>
</span><span id="line-657"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#StaticOrigin"><span class="hs-identifier hs-var">StaticOrigin</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a static form&quot;</span></span><span>
</span><span id="line-658"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#NonLinearPatternOrigin"><span class="hs-identifier hs-var">NonLinearPatternOrigin</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a non-linear pattern&quot;</span></span><span>
</span><span id="line-659"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Tc.Types.Origin.html#UsageEnvironmentOf"><span class="hs-identifier hs-type">UsageEnvironmentOf</span></a></span><span> </span><span id="local-6989586621680880371"><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880371"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SDoc] -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#hsep"><span class="hs-identifier hs-var">hsep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;multiplicity of&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">SDoc -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#quotes"><span class="hs-identifier hs-var">quotes</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Name -&gt; SDoc
forall a. Outputable a =&gt; a -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#ppr"><span class="hs-identifier hs-var">ppr</span></a></span><span> </span><span class="annot"><span class="annottext">Name
</span><a href="#local-6989586621680880371"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-660"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><a href="GHC.Tc.Types.Origin.html#BracketOrigin"><span class="hs-identifier hs-var">BracketOrigin</span></a></span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
</span><a href="GHC.Utils.Outputable.html#text"><span class="hs-identifier hs-var">text</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;a quotation bracket&quot;</span></span><span>
</span><span id="line-661"></span><span class="annot"><a href="GHC.Tc.Types.Origin.html#pprCtO"><span class="hs-identifier hs-var">pprCtO</span></a></span><span> </span><span class="annot"><span class="annottext">CtOrigin
</span><span class="hs-identifier">_</span></span><span>                     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; SDoc
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;pprCtOrigin&quot;</span></span><span>
</span><span id="line-662"></span></pre></body></html>